Entity framework 4 EF4查询视图还是定义查询? 我正在努力完成一个项目的设计,基本上已经走到了岔路口。我已经决定使用EF4作为我的数据持久层,但是我现有的数据库给我带来了一些麻烦。更改或扩充数据库不是一个选项。我有一个表,它真的有多种用途,并且包含120列(我没有设计这个表!!!-它是很久以前SQL Server转换后的DB2遗留物)。我设计了一个类图,从这个表中以不同的聚合级别创建了五个实体。在我研究在这些情况下该怎么做的过程中,我已经将范围缩小到在MSL层中使用“QueryView”或在SSDL层中使用“DefiningQuery”来从这个整块石表中创建我需要的实体。结果数据只需要是只读的。我更喜欢返回一个合适的实体,但匿名类型或dbdatarecord也可以

Entity framework 4 EF4查询视图还是定义查询? 我正在努力完成一个项目的设计,基本上已经走到了岔路口。我已经决定使用EF4作为我的数据持久层,但是我现有的数据库给我带来了一些麻烦。更改或扩充数据库不是一个选项。我有一个表,它真的有多种用途,并且包含120列(我没有设计这个表!!!-它是很久以前SQL Server转换后的DB2遗留物)。我设计了一个类图,从这个表中以不同的聚合级别创建了五个实体。在我研究在这些情况下该怎么做的过程中,我已经将范围缩小到在MSL层中使用“QueryView”或在SSDL层中使用“DefiningQuery”来从这个整块石表中创建我需要的实体。结果数据只需要是只读的。我更喜欢返回一个合适的实体,但匿名类型或dbdatarecord也可以,entity-framework-4,Entity Framework 4,我曾尝试在MSL中使用QueryView,并在CSDL中定义实体,但MSL不断重新生成,编译时更改丢失。为什么? 有人能为我在这里应该做什么提供意见吗?在这种情况下,使用DefiningQuery或QueryView更可取吗?在从数据库或编译中更新模型后,如需保留这些更改,我们将不胜感激。QueryView不应重新生成。我不确定从数据库进行更新时,QueryView的行为。我确信在从数据库进行更新时,DefiningQuery将被删除,因为DefiningQuery是在SSDL中定义的,在从数据

我曾尝试在MSL中使用QueryView,并在CSDL中定义实体,但MSL不断重新生成,编译时更改丢失。为什么?


有人能为我在这里应该做什么提供意见吗?在这种情况下,使用DefiningQuery或QueryView更可取吗?在从数据库或编译中更新模型后,如需保留这些更改,我们将不胜感激。

QueryView
不应重新生成。我不确定从数据库进行更新时,
QueryView
的行为。我确信在从数据库进行更新时,
DefiningQuery
将被删除,因为
DefiningQuery
是在SSDL中定义的,在从数据库进行更新时会被完全删除。通过使用两个不同的EDMX,我有一些自定义定义查询的变通方法—一个只用于查询,另一个用于从数据库更新的实体。一般概念是

QueryView
DefiningQuery
之间的区别在于包含这些构造的级别
QueryView
是作为自定义ESQL查询构建在现有实体之上的MSL元素,因此您的120列实体必须存在于EDMX中。来自未知原因
QueryView
has
DefiningQuery
将SSDL元素构建为自定义SQL查询。默认情况下,它用于数据库视图(顺便说一句,可能是您的最佳选择)