Я довольно новичок в Entity Framework, и, хотя у него много преимуществ перед NHibernate, я разочарован тем, что обнаружил, что он не поддерживает ленивую загрузку свойств.Могу ли я ленить загружать часть объекта в Entity Framework 6 с разделением объектов?
Возьмите этот класс:
public class Product
{
public virtual Guid Id {get;set;}
public virtual string Name {get;set;}
public virtual string Details {get;set;}
}
Мой план состоял в том, чтобы использовать Entity Нарезка для отображения его на две таблицы:
CREATE TABLE [dbo].[Product](
[Id] [uniqueidentifier] NOT NULL PRIMARY KEY,
[Name] [nvarchar](50) NULL
)
CREATE TABLE [dbo].[ProductDetails](
[Id] [uniqueidentifier] NOT NULL PRIMARY KEY,
[Details] [nvarchar](max) NULL
)
И вот мой беглый отображение:
modelBuilder.Entity<Product>()
.Map(m =>
{
m.Properties(t => new { t.Id, t.Name });
m.ToTable("Product");
})
.Map(m =>
{
m.Properties(t => new { t.Id, t.Details});
m.ToTable("ProductDetails");
});
Я хочу показать список продуктов, не загружая поле сведений. Однако, когда я загружаю продукт, он всегда делает INNER JOIN. Я хочу, чтобы он читал только из Product, но затем читал из ProductDetails, когда я читал свойство Details.
Как это можно достичь?
Если это невозможно, как еще я могу реализовать ленивую загрузку свойств?
Разделение таблицы неприемлемо, так как это означает, что механизм персистенции диктует дизайн домена.
Редактировать после ответа CodeCaster в:
Домен фиксирована - Я не хочу решение, которое вводит объект Детали изделия. Этот вопрос касается сохранения существующей модели домена. Изменение домена не отвечает на вопрос.
может быть, я не ясно , но это именно то, чего я пытался избежать. Вы говорите, что модели Entity не обязательно должны быть моделями доменов. Я начинаю думать, что это означает, что EF не подходит для неуверенной модели домена? –
_ «EF не подходит для неустойчивой модели домена?» - EF - это ORM, который в значительной степени привязан к базам данных SQL, который вряд ли можно считать неустойчивым. :) – CodeCaster
Хорошо спроектированный домен не знает даже O/RM или даже наличие O/RM. Я могу вообще заменить NHibernate или EF в своих системах или, возможно, даже на базу данных документов (хотя я еще этого не пробовал). –