假设我们有以下课程:
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场景,其中实体定义没有修复,可以由用户更新。有关实体的信息(元数据)存储在其他表中
答案 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;}
}