私は 3 つのモデルをセットアップしました。最初にコードを作成しました。関係は機能しているように見えますが、1 つが問題を引き起こしています。
Article クラス、Language クラス、Edition クラスがあります
public class Article
{
public int ID { get; set; }
public string Name { get; set; }
public string Icon { get; set; }
}
public class Language
{
public int ID { get; set; }
public string Name { get; set; }
public string Code { get; set; }
}
public class Edition
{
public int ID { get; set; }
public Article Article { get; set; }
public Language Language { get; set; }
public string Title { get; set; }
public string Details { get; set; }
}
私のブートストラップ/DBinitialiser では、オブジェクトを作成し、それらを適切に設定できます。DB が作成され、Language と Article の外部キーが両方とも Edition テーブルに存在し、正しく入力されます。
var engLang = new Language() {Code="en", Name="English Language"};
var altLang = new Language() {Code="xx", Name="Alternative Language"};
db.Languages.Add(engLang);
db.Languages.Add(altLang);
db.SaveChanges();
var testArt = new Article() { Name = "test" };
db.Articles.Add(testArt);
db.SaveChanges();
db.Editions.Add(new Edition(){Article = testArt, Language = engLang, Title="English Content"});
db.Editions.Add(new Edition(){Article = testArt, Language = altLang, Title="Alternative Content"});
db.SaveChanges();
Edition を照会してそれらのリストを返すことができるようになりましたが、Language 属性は常に NULL です。Article 属性は正常に機能します。
var query = db.Editions.Where(r => r.Article.ID == Article.ID);
foreach (Edition item in query)
{
// item.Language => NULL
// item.Article => {Object Article}
}
私は .net と Entity-Framework を初めて使用するので、なぜこのエラーが常に発生するのかわかりません。r => r.Language.ID == 1 でクエリを実行しても、Edition オブジェクトの NULL 属性を取得できます。