Sql server 实体框架数据库优先SQL视图
我有一个使用直接T-SQL的应用程序,我想使用实体框架。问题是所有数据都是从视图中提取的,而这些视图是从多个数据库中提取信息的(即不允许模式绑定) 当我尝试将视图导入EDMX文件时,大多数视图都有一个警告,表示它们正在推断主键,并且将是只读的,对此我没有意见。但是,其中有几个错误消息: 错误6013:表/视图“[Database].dbo.[view]”未定义主键,无法推断有效的主键。此表/视图已被排除。要使用该实体,您需要检查您的模式,添加正确的键,并取消注释它 这些视图从未进入EDMX文件,因此我无法使用VS为它们分配主键。它们提取的数据来自另一个数据库,因此我也无法在数据库端分配主键(使用SCHEMABINDING)Sql server 实体框架数据库优先SQL视图,sql-server,database,entity-framework,Sql Server,Database,Entity Framework,我有一个使用直接T-SQL的应用程序,我想使用实体框架。问题是所有数据都是从视图中提取的,而这些视图是从多个数据库中提取信息的(即不允许模式绑定) 当我尝试将视图导入EDMX文件时,大多数视图都有一个警告,表示它们正在推断主键,并且将是只读的,对此我没有意见。但是,其中有几个错误消息: 错误6013:表/视图“[Database].dbo.[view]”未定义主键,无法推断有效的主键。此表/视图已被排除。要使用该实体,您需要检查您的模式,添加正确的键,并取消注释它 这些视图从未进入EDMX文件,
有关如何将这些视图强制放入EDMX文件的提示?您可以使用XML编辑器打开EDMX文件并添加如下键
<Key>
<PropertyRef Name="ColumnName1" />
<PropertyRef Name="ColumnName2" />
</Key>
整个事情应该是这样的:
<EntityType Name="ViewName">
<Key>
<PropertyRef Name="ColumnName1" />
<PropertyRef Name="ColumnName2" />
</Key>
<Property Type="String" Name="ColumnName1" />
<Property Type="String" Name="ColumnName2" />
<Property Type="String" Name="ColumnName3" />
</EntityType>
不幸的是,我已经试过了。它产生了许多错误,导致我不仅添加了键,还添加了EntitySet、DefiningQueries和EntitySetMappings。VisualStudio仍然拒绝承认该视图已导入。