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 когда я получаю доступ к собственности компании, но я не делаю!

0 ответов

Другие вопросы по тегам