ドメイン プロジェクトで (poco?) クラスを定義しました。
public class Club
{
public Club()
{
ContactPersons = new HashSet<ContactPerson>();
}
public int Id { get; set; }
[Required]
[StringLength(64)]
public string Name { get; set; }
public virtual ICollection<ContactPerson> ContactPersons { get; set; }
}
public class ContactPerson
{
public virtual int Id { get; set; }
[StringLength(64)]
public virtual string FirstName { get; set; }
[StringLength(64)]
public virtual string LastName { get; set; }
}
私の MVC プロジェクトには、クラブコントローラーがあります。
public ActionResult Create(CreateClubViewModel model)
{
Club club = new Club();
model.Initialize(club);
IClubDb clubDb = DependencyResolverHelper.IClubDbService;
clubDb.Create(club); // create club in db
}
public ActionResult Display(string domain)
{
try
{
IClubDb clubDb = DependencyResolverHelper.IClubDbService;
Club club = clubDb.Get(domain);
return View(club);
}
catch (Exception) // user is not logged iin
{
return View();
}
}
最後に、DB プロジェクトでクラブを作成して取得し、
public Club Get(string name)
{
return DataContext.Clubs
//.Include(x => x.ContactPersons)
.Single(r => r.Name == name);
}
public int Create(Club club)
{
DataContext.Clubs.Add(club);
return DataContext.SaveChanges();
}
Display メソッドで Get クラブを呼び出すと、EF がクラブ オブジェクトの ContactPersons を遅延ロードするようにあらゆることを試みましたが、ContactPersons の長さは常にゼロです。ただし、.include を使用して連絡担当者を熱心に読み込むと (この部分はコメントアウトしました)、明らかに ContactPersons には多数の連絡先が含まれます。
何が間違っているのかわかりません:
- poco クラスを定義するためのガイドラインに従っています: http://msdn.microsoft.com/en-us/library/dd468057.aspx
- パブリック パラメーターのないコンストラクターがあります (ただし、保護されたコンストラクターはありません)。
- 遅延読み込みを有効にしています
私は概念が欠けていると思います.pocoクラブクラスは、DBに挿入するドメインエンティティでもあります. 私は何を間違っていますか?遅延読み込みが機能しないのはなぜですか?