Как эффективно включить принадлежащие предприятия по внешнему ключу в ядро ​​EF 2.1? - PullRequest
0 голосов
/ 16 сентября 2018

У меня есть модель: UploadedFile.

class UploadedFile : EntityBase {
    Guid OwnerId {get;set;}
    string Url {get;set;}
}

class EntityBase { Guid Id {get;set;} }

Есть также несколько не связанных сущностей, которые могут владеть загруженными файлами (один-ко-многим).Все сущности происходят от EntityBase.Я не могу установить соединения, используя fluent-API, поскольку несвязанные объекты «используют» один и тот же столбец (OwnerId).Я хотел бы добиться следующего:

context.SomeOwner1.Include(o => o.UploadedFiles)

Нет возможности (или, может быть, есть?) Для настройки интерфейс отношений (я получаю The entity type 'Models.IUploadedFilesOwner' provided for the argument 'clrType' must be a reference type.).

Я могу добиться запрошенного поведения, используя:

context.SomeOwner1.Select( o=> new SomeOwner1
    { o.UploadedFiles = 
      context.UploadedFiles.Where(u => u.OwnerId == o.Id),
      Id = o.Id,
      more properties... // <- NOTE THIS
    }

Но не так уж СУХО, чтобы включить все свойства еще раз;и невозможность использовать .Include(...) внутри select.

Чего мне не хватает?

...