【问题标题】:Entity Framework : How could it be possible to add to SQL Server View?实体框架:如何添加到 SQL Server 视图?
【发布时间】:2011-08-31 11:39:11
【问题描述】:
也许我在这里错过了什么,但我不这么认为。
我有一个实体模型,它也包含 sql server 视图。当我使用我的实体时,我注意到类似以下方法;
HubEntities _entities = new HubEntities();
_entities.vw_AccommPropertiesFullWeb.AddObject(...
vw_AccommPropertiesFullWeb 这是一个视图。
如何向视图添加新视图? EF 的人是故意这样做还是配置错误?
【问题讨论】:
标签:
.net
sql-server
entity-framework
entity-framework-4
【解决方案1】:
如果您将 SQL 视图导入模型,它始终表示为 DefiningQuery,根据定义,它是只读的。使其可写的唯一方法是实现存储过程并将它们映射到实体类型的Insert、Update 和Delete 操作。
解决方法是以 EF 认为它是表的方式映射视图。它需要:
- 手动修改 EDMX 文件,除非您购买一些额外的工具,否则您将永远无法再次使用数据库更新 = 您将手动维护 EDMX
- 您的视图必须是可更新的 - 它必须遵循数据库服务器定义的一些规则 - 通常在与 EF 一起使用时,它要么意味着您的视图必须具有
INSTEAD OF 触发器以进行修改操作,要么它不能使用连接、联合、计算列,聚合或其他任何内容,除非这些操作产生的列在 EF 中被标记为计算(数据库视图只允许从基表插入和更新列)。