我有一个web应用程序,asp.net web-form 4.5 C#,EF6 DB-first, 我工作了将近一年,一切正常,直到今天,当我试图从数据库添加edmx更新的新视图时。 该表添加没有错误,但从代码中看不到,如果我尝试附加到EntityDataSource,我收到消息" 无法找到CLR类型。& #34;
我已经看到代码生成策略设置为 T4 。 如果我更改为" 旧版ObjectContext "在代码中正确看到新实体并且EntityDataSource工作正常,我可以完美地看到gridview关联, 但是,如果我尝试导航到其他页面,我可以访问其他页面#34; old"实体,我得到几行错误:
指定的架构无效。错误: CLR类型到EDM类型的映射是不明确的,因为多个CLR类型与EDM类型匹配'报告'。以前找到了CLR类型'报告',新发现的CLR类型' AppNameModel.Report' 。 CLR类型到EDM类型的映射是不明确的,因为多个CLR类型与EDM类型匹配'客户'。以前发现CLR类型'客户',新发现的CLR类型' AppNameModel.Customer'。 ....等等所有以前创建的实体(最后一个未列出并与遗留的objCtx策略一起使用!)
那么EF的错误是什么?我已经阅读了关于堆栈溢出的所有Q& A,但似乎没有一个解决方案。
我将把web.config的一部分放在
中<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
...
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
这是edmx的属性:
当我使用T4策略添加视图时,实际上,视图不存在于定义实体的任何文件中,仅显示在emdx可视化设计器上。我已经检查了文件.cs和.context.cs
请给出一些意见,我必须看看,我该如何解决...某个方向!感谢
答案 0 :(得分:4)
我还没有发现导致问题的原因,我找到了解决方法:
在与您的edmx相关联的两个 .tt 文件上运行自定义工具。 这两个文件包含自动生成的代码,如果自动生成不再起作用,运行自定义工具会强制它根据您的edmx模型更新代码。