现象:在开发过程中,发现视图数据在数据库中查询是没问题的,但是用EF的实体集合来查询就会出现:记录总数正确,但是其中一些实体的值和其他实体一样。
原因:EF填充实体时是根据主键来的,如果EF视图模型推断的主键中有相同值,那么填充实体时只会用与主键匹配的第一条记录来填充所有相同主键的实体。
解决:给视图添加一个主键列。
主键列:
ISNULL(ROW_NUMBER() OVER(ORDER BY 数据列名),0) V_ID
在使用EF进行视图数据查询时,可能会遇到实体值重复的问题。这是因为EF根据主键来填充实体,若主键重复,则会用第一条记录填充所有相同主键的实体。解决方法是在视图中增加唯一主键。
现象:在开发过程中,发现视图数据在数据库中查询是没问题的,但是用EF的实体集合来查询就会出现:记录总数正确,但是其中一些实体的值和其他实体一样。
原因:EF填充实体时是根据主键来的,如果EF视图模型推断的主键中有相同值,那么填充实体时只会用与主键匹配的第一条记录来填充所有相同主键的实体。
解决:给视图添加一个主键列。
主键列:
ISNULL(ROW_NUMBER() OVER(ORDER BY 数据列名),0) V_ID
被折叠的 条评论
为什么被折叠?