实体框架4.1类型和表格拆分

时间:2012-12-12 10:07:54

标签: entity-framework mapping code-first

我的数据库中有以下表结构:

指示

  • Id
  • 输入
  • 实例名
  • StringValue
  • IntValue

我有这个类结构

abstract class Indication  
{
    public int Id { get; set; }  
    public int Type { get; set; }
    public string InstanceName { get; set; }
}

class StringIndication : Indication  
{
    public string Value { get; set;}
}

class IntIndication : Indication  
{
    public intValue { get; set;}
}

我想将我的表映射到此结构取决于Type属性。 所以,这很简单:

modelBuilder.Entity<Indication>()
    .Map<IntIndication>(m => m.Requires("Type").HasValue(1))
    .Map<StringIndication>(m => m.Requires("Type").HasValue(2));
modelBuilder.Entity<IntIndication>().Property(c => c.Value).HasColumnName("IntValue");
modelBuilder.Entity<StringIndication>().Property(c => c.Value).HasColumnName("StringValue");

它工作正常,但现在我想再做一件事。我想要InstanceName的字典。 所以,我创建了另一个表

实例

  • 编号
  • 名称

,将Indication表中的InstanceName更改为InstanceId。

但我不希望像

这样的查找属性
public Instance Instance {get;set;}

在我的指示表中。 相反,我想保持

    public string InstanceName { get; set; }

并添加其他

    public id InstanceId { get; set; }

那么,我应该如何更改我的映射来完成这项工作呢?

非常感谢!

1 个答案:

答案 0 :(得分:0)

我相信这会有你的答案:

http://msdn.microsoft.com/en-us/data/jj715646.aspx 它涵盖了EF Designer - 将实体映射到多个表(实体拆分)