Entity Framework 6 1-1 Навигационное свойство всегда загружается
У меня есть класс сущности с именем Contact:
public class Contact{
public int idContact { get; set; }
public int id_Company { get; set; }
public string Name { get; set; }
public string Address { get; set; }
public string Phone { get; set; }
public string Fax { get; set; }
public string Mobile { get; set; }
public string Email { get; set; }
public bool ShippingLocation { get; set; }
public virtual ICollection<Change> Changes { get; set; }
public virtual ICollection<Entity> Entities { get; set; }
public virtual ICollection<Entity> Entities1 { get; set; }
public virtual Company Company { get; set; }
}
Это все хорошо. Я включил LazyLoading в контексте.
Я хочу выяснить, почему, когда я получаю список контактов, Company
свойство всегда заполнено.
Я понимаю идею LazyLoading, и вы должны указать свойства навигации для загрузки, используя Include()
расширение на IQueryable (или убедитесь, что контекст по-прежнему доступен при доступе к свойству - в противном случае ObjectDisposedException).
Я просто хотел бы знать, почему EF загружает 1-1 автоматически, даже если я специально не спрашиваю об этом - побочный эффект этого заключается в том, что теперь я должен быть осторожен при добавлении / обновлении контактов, поскольку я получаю дубликат Company
объекты в БД. То есть я должен вручную установить Company
обнулить или изменить его состояние сущности при обновлении связанной сущности.
редактировать
Вот как я заполняю список контактов:
public Dictionary<int, Contact> GetContacts(Func<T, TKey> selector)
{
using (DbContext db = new Context())
{
return context.Set<Contact>().ToDictionary(selector);
}
}
Итак, в теории я должен получить ObjectDisposedException
когда я получаю доступ к собственности компании, но я не делаю!