Можно ли сопоставить сущность EF двум таблицам с полиморфным внешним ключом? - PullRequest
2 голосов
/ 25 января 2011

Я хотел бы создать новую сопоставленную сущность, которая выглядит следующим образом:

public class PathedItem
{
  public long Id { get; set; }      // from the Items table
  public string Name { get; set; }  // from the Items table
  public string Path { get; set; }  // from the Paths table
}

Проблема в том, что Path находится в другой таблице, чем другие элементы, и одна из этих таблиц имеетполиморфный внешний ключ.Вот мои таблицы:

CREATE TABLE Items (
  [Id] [bigint] IDENTITY(1,1) NOT NULL,
  [Name] [nvarchar](255) NOT NULL)

CREATE TABLE Paths (
  [Id] [bigint] IDENTITY(1,1) NOT NULL,
  [Path] [nvarchar](255) NOT NULL,
  [ItemId] [bigint] NOT NULL,
  [ItemType] [int] NOT NULL)

У Microsoft есть HOWTO по сопоставлению сущностей с двумя таблицами ( здесь и здесь ), но они, похоже, полагаются на нормальные внешниеkey.

Есть ли способ сопоставить Paths.ItemId с Items.Id и затем жестко закодировать значение для Paths.ItemType в соединении?

1 Ответ

3 голосов
/ 31 января 2011

Один из способов сделать это - создать представление с необходимыми столбцами и фильтром для ItemType.

Затем добавьте это представление в модель сущности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...