C# 具有稀疏表的实体框架

C# 具有稀疏表的实体框架,c#,sql,entity-framework,sparse-matrix,database-normalization,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 数据库中的几行应该作为单个对象处理。 例如: Model obj=new Model(1);//where 1 refers to the Row

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

RowId  |  Field  |  Value
  1    ,"Field1",    1.00
  1    ,"Field2",    2.00
  1    ,"Field4",    4.00
  2    ,"Field1",    1.00
  2    ,"Field3",    3.00
数据库中的几行应该作为单个对象处理。 例如:

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

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

您所演示的不是稀疏表,而是一个表。实体框架不支持EAV建模,并且它可能会导致重大的错误

如果您的属性不是动态的,那么您可以以更传统的方式对数据进行建模和使用,尽管它们有自己的属性


考虑到实体框架的工作方式,对于除最琐碎的应用程序之外的任何应用程序,您都可以与第三范式吻别。

不使用键值对,您应该检查。你所说的“稀疏表”通常被认为是一个糟糕的设计(而且效率很低)。ORM无法在不引起更多头痛的情况下修复此问题。至少:如果不阅读所有内容就无法知道有多少字段,那么如何映射到字段?