我可以将EF实体映射到具有多态外键的两个表吗?

时间:2011-01-25 19:34:00

标签: .net entity-framework entity-framework-4 polymorphic-associations edmx

我想创建一个新的映射实体,如下所示:

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实体映射到两个表(herehere),但它们似乎依赖于正常的外键。

是否有某种方法可以将Paths.ItemId映射到Items.Id,然后在联接中对Paths.ItemType的值进行硬编码?

1 个答案:

答案 0 :(得分:3)

执行此操作的一种方法是创建一个视图,其中包含您需要的列以及ItemType上的过滤器。

然后将该视图添加到您的实体模型。