1

假設我們有下面的類:EF4.1如何從不同的表映射屬性列表

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

表結構是這樣的:

MyEntity 
Id uniqueidentifier 

我要存儲的值DataValues取決於EntityType在不同的表中。例如,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安裝場景,其中實體定義不固定,並且可以由用戶更新。關於實體的信息(元數據)存儲在其他表

回答

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;} 
} 
+1

會更好,如果多態性使用 – Eranga 2012-02-10 11:49:44

+0

有趣的想法,但我不想定義類MyEntity1,MyEntity2。我只想將我的數據存儲在該表結構中 – Ngm 2012-02-10 11:52:04