0

我的数据表是稀疏的,因此,数据被存储为,例如:实体框架与稀疏表

RowId | Field | Value 
    1 ,"Field1", 1.00 
    1 ,"Field2", 2.00 
    1 ,"Field4", 4.00 
    2 ,"Field1", 1.00 
    2 ,"Field3", 3.00 

和几排在DB应作为一个单一的对象进行处理。 例如:

Model obj=new Model(1);//where 1 refers to the RowId 
obj.Field1=1;//should update the relevant row 
obj.Field2=0;//should delete the relevant row (assuming 0 is the default value) 
obj.Field3=3;//should create a new row 

如何使用实体框架来封装这种行为?

+0

而不是使用键值对,您应该检查[Sparse Columns](http://technet.microsoft.com/en-us/library/cc280604.aspx)。你称之为“稀疏表格”通常被认为是一个糟糕的设计(效率非常低)。一个ORM无法解决这个问题,而不会导致更多的麻烦。至少:如果没有阅读所有内容,你怎么能知道有多少田地? –

回答

1

你所说明的不是一个稀疏表格,它是一个Entity-Attribute-Value (EAV)表格。实体框架不支持EAV建模,它可能会导致主要的performance issues

如果您的属性不是动态的,那么您可以使用更传统的方式为数据建模并使用Sparse Columns,尽管它们各自拥有pros and cons

鉴于实体框架的工作方式,除了最琐碎的应用程序之外,您可以亲吻第三范式。