具有稀疏表的实体框架

时间:2013-11-26 16:14:59

标签: c# sql entity-framework sparse-matrix database-normalization

我的数据表很稀疏,因此数据存储如下:

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

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

1 个答案:

答案 0 :(得分:1)

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

如果您的属性不是动态的,那么您可以使用Sparse Columns以更传统的方式对数据进行建模,但使用pros and cons

鉴于实体框架的工作方式,除了最简单的应用程序之外的任何东西,你都可以亲吻第三范式。再见。