У меня есть проблема с разработкой ко многим отношениям в коде. EF создает таблицу Junction и связывает Fk, как я ожидал бы, однако, когда я пытаюсь получить доступ к коллекции MailingList пользователя, записей нет.EF Code First - много для многих
Я внедрил тестовые данные при инициализации через Seeding, данные находятся в базе данных.
Я думаю, что проблема связана с конструкторами для пользователей и списков рассылки, но я не уверен. Я хочу, чтобы иметь возможность навигации навигационного свойства User.MailingLists.
var user = db.Users.Find(1);
Console.WriteLine("{0}", user.EmailAddress); //This is Fine
Console.WriteLine("{0}", user.Address.PostCode); /This is Fine
foreach (MailingList ml in user.MailingLists) // this is 0
{
Console.WriteLine("{0}", ml.Name);
}
Моя модель ниже: -
public class User : IEntityBase
{
public User()
{
MailingLists = new List<MailingList>();
}
public int Id { get; set; }
public string Forename { get; set; }
public string Surname { get; set; }
public string EmailAddress { get; set; }
public DateTime? DateLastUpdated { get; set; }
public DateTime DateCreated { get; set; }
public bool IsDeleted { get; set; }
public virtual Address Address { get; set; }
public ICollection<MailingList> MailingLists { get; set; }
}
public class MailingList : IEntityBase
{
public MailingList()
{
Users = new List<User>();
}
public int Id { get; set; }
public string Name { get; set; }
public DateTime? DateLastUpdated { get; set; }
public DateTime DateCreated { get; set; }
public bool IsDeleted { get; set; }
public ICollection<User> Users { get; set; }
}
public class Address : IEntityBase
{
public int Id { get; set; }
public string AddressLine1 { get; set; }
public string AddressLine2 { get; set; }
public string AddressLine3 { get; set; }
public string City { get; set; }
public string County { get; set; }
public string PostCode { get; set; }
public DateTime? DateLastUpdated { get; set; }
public DateTime DateCreated { get; set; }
public bool IsDeleted { get; set; }
}
Любые предложения приветствуются.
Спасибо, что здесь предпочтительный метод? Является ли загруженная загрузка менее экспансивной? – Derek
Если вы уверены, что вам понадобятся данные, загрузка будет лучше, так как она загрузит все в одном вызове в БД. Lazy loading лучше, если вы не знаете, какие данные вам понадобятся. Это также удобно для случаев, когда производительность не является проблемой. –
Итак, с нетерпением-загрузкой я могу работать на том основании, что мои вызовы будут получать только то, что мне нужно от определенного объекта, если я имею в виду то, что ищу. Если мне нужно захватить все данные, относящиеся к объекту, ленивая загрузка будет тянуть во всем? – Derek