我的数据表很稀疏,因此数据存储如下:
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 :(得分:1)
您所说明的不是稀疏表,而是Entity-Attribute-Value (EAV)表。实体框架不支持EAV建模,它可能会导致主要的performance issues。
如果您的属性不是动态的,那么您可以使用Sparse Columns以更传统的方式对数据进行建模,但使用pros and cons。
鉴于实体框架的工作方式,除了最简单的应用程序之外的任何东西,你都可以亲吻第三范式。再见。