Mam zdefiniowane klasy w moim projekcie domeny (poco?):Lazy ładowanie nie działa w ramach podmiotu 5
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; }
}
W moim projekcie MVC Mam clubcontroller:
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();
}
}
Finally w moim projekcie DB utworzyć i pobrać klub,
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();
}
próbowałem wszystkiego, aby uzyskać EF do leniwego obciążenia na ContactPersons m y obiekt klubowy, gdy wywołuję Get Club w metodzie Display, ale ContactPersons ma zawsze długość zero. Jednakże, jeśli mam ochotę załadować osoby kontaktowe za pomocą .include (skomentowałem tę część), to oczywiście ContactPersons zawiera pewną liczbę kontaktów.
Nie jestem pewien, co robię źle:
- Śledzę wytyczne dla określenia POCO klasy: http://msdn.microsoft.com/en-us/library/dd468057.aspx
- mam parametr publiczny mniej konstruktora (ale nie chronione konstruktora)
- Mam włączone lazyloading
Myślę, że brakuje mi koncepcji, klasa klubowa poco jest również moją domeną, którą wstawiam do DB. Co ja robię źle? Do kogo nie mogę się lenić ładując do pracy?
Spróbuj użyć "Listy" zamiast "ICollection ". Nie sądzę, że EF jest na tyle sprytny, aby używać Dominiki, ICollection –
, po prostu wypróbowałem twoją sugestię, wciąż to samo, ContactPersons jest puste :( – user1780105
@Dominic: 'ICollection' działa całkiem dobrze.To ma więcej sensu od czasu 'List 'implikuje zamówienie, a powiązane podmioty nie są zwracane w żadnej określonej kolejności –