Полиморфные связи в Entity Framework

317
03 сентября 2018, 13:40

Есть, скажем, таблица Attachments со столбцами: id | ownerId | ownerType, которые, соответственно: первичный ключ, внешний ключ и таблица, к которой относится внешний ключ.

Например:

  id  |  ownerId  |  ownerType  
---------------------------------
  1        1           Post
  2        1          Comment

Можно ли средствами EntityFramework организовать связь так, чтобы на выходе в сущности поста и комментария были коллекции с их вложениями? Что-то вроде:

builder.Entity<Post>().
    .HasMany(p => p.Attachments)
    .WithOne()
    .HasForeignKey(a => a.OwnerId); // and a.OwnerType = "Post"

UPD: В комментариях посоветовали просто добавить свойство коллекции вложений в нужные сущности и доверить остальное самой EF. Я так и сделал.

А потом мне захотелось добавить третью сущность с вложениями.

Не выглядит ли подобное решение немного странным? Аж 3 внешних ключа.

READ ALSO
Как &ldquo;присвоить&rdquo; функцию в переменную?

Как “присвоить” функцию в переменную?

Здравствуйте как "присвоить" функцию в переменную:

218
Фильтры с DI в ASP.NET Core

Фильтры с DI в ASP.NET Core

В чем отличие ServiceFilterAttribute от TypeFilterAttribute? Ну кроме того что второй не надо регистрировать в контейнереИ где какой использовать?

242
Разветвление сайта

Разветвление сайта

Представьте ситуацию, когда при входе на сайт выдается модальное окно и спрашивает вы хотите перейти на сайт кока кола или пепси? При клике...

259
Чтение файла по частям

Чтение файла по частям

Есть вот такой метод, который читает по частям файл

233