Я пытаюсь обернуть голову вокруг объектов, принадлежащих EF Cores, и узнать, как я могу контролировать, когда загружать определенные куски данных.
В основном у меня есть куча старых унаследованных таблиц (некоторые с ~ 150 столбцами), и я хочу смоделировать их, используя корневую сущность и несколько принадлежащих ей объектов на таблицу, чтобы добиться лучшей сегментации и связать определенные функции. Пример: существует сущность «article», содержащая ~ 20 свойств для наиболее важных полей базовой таблицы. Эта сущность также содержит OwnedObject «StorageDetails», обертывающий еще десяток полей (и все функции, связанные с хранением вещей).
Проблема: я не могу найти способ контролировать, должен ли принадлежащий объект загружаться немедленно или нет. Для некоторых из них я бы предпочел загружать их явно, используя Include () ...
public class Article : EntityBase
{
public string ArticleNumber { get;set; }
// Owned object, shares article number as key.
public StorageDetails StorageStuff { get; set; }
// An Entity from another table having a foreign key reference
public SomeOtherEntity OtherStuff { get; set; }
}
public class StorageDetails : OwnedObject<Article>
{
public Article Owner { get; set; }
}
// Somewhere during model creation ...
builder.OwnsOne(article => article.StorageStuff);
builder.HasOne(article => article.OtherStuff )
...
Определение модели с OwnsOne и загрузка статьи немедленно загружает StorageStuff. Чтобы загрузить OtherThing, я должен включить его в запрос (Inlcude ()), чего я и хочу достичь для принадлежащего объекта.
Это возможно? Если нет, на какой другой подход вы могли бы указать мне?