EF4.1如何映射来自不同表的属性列表

时间:2012-02-10 11:36:39

标签: entity-framework-4.1 ef-code-first metadata dynamic-data

假设我们有以下课程:

public class MyEntity
{
   public Guid Id { get; set; }
   public int EntityType { get; set; }
   public List<integer> DataValues { get; set; }
}

表结构如下:

MyEntity
Id uniqueidentifier

我想根据EntityType将DataValues的值存储在不同的表中。例如,MyEntity1将有两个整数字段,而MyEntity2可能有三个整数字段。

MyEntity1
EntityId (FK to MyEntity)
Integer1 int
Integer2 int

MyEntity2
EntityId (FK to MyEntity)
Integer1 int
Integer2 int
Integer3 int

因此,如果我有一个类型为“MyEntity1”的实例,我的表将具有以下值:

MyEntity
Id          EntityType
---------------------
someguid1     1

MyEntity1
EntityId  Integer1   Integer2
------------------------------
someguid1 100         200

在运行时,另一个类说MyEntityDefinition存储实体存储的整数数量,通过引用此类我可以知道如果实体的类型为MyEntity1,那么它包含两个整数值。

我希望将这个表结构映射到MyEntity类,任何可能的方法吗?

PS:我不想定义类MyEntity1,MyEntity2。我只想使用表结构(MyEntity,MyEntity1,MyEntity2)来存储数据。

基本上我正在评估EF 4.1 ins场景,其中实体定义没有修复,可以由用户更新。有关实体的信息(元数据)存储在其他表中

1 个答案:

答案 0 :(得分:0)

不确定是否可能,但是这样的事情怎么样:

public class MyEntity
{
   public Guid Id { get; set; }
   public int EntityType { get; set; }

   public static List<int> DataValues(MyEntity obj)
   {
      if (obj.EntityType == 1)
      {
         MyEntity1 e1 = (MyEntity1)obj;
         // TODO: return list of integers from e1
      }
   }
}


public class MyEntity1 : MyEntity
{
  public int Integer1 {get;set;}
  public int Integer2 {get;set;}
}