实体框架6找不到<model>。<entity> </entity> </model>的CLR类型

时间:2014-09-25 01:03:31

标签: c# asp.net .net entity-framework entity

我有一个web应用程序,asp.net web-form 4.5 C#,EF6 DB-first, 我工作了将近一年,一切正常,直到今天,当我试图从数据库添加edmx更新的新视图时。 该表添加没有错误,但从代码中看不到,如果我尝试附加到EntityDataSource,我收到消息&#34; 无法找到CLR类型。& #34;

我已经看到代码生成策略设置为 T4 。 如果我更改为&#34; 旧版ObjectContext &#34;在代码中正确看到新实体并且EntityDataSource工作正常,我可以完美地看到gridview关联, 但是,如果我尝试导航到其他页面,我可以访问其他页面#34; old&#34;实体,我得到几行错误:

指定的架构无效。错误: CLR类型到EDM类型的映射是不明确的,因为多个CLR类型与EDM类型匹配&#39;报告&#39;。以前找到了CLR类型&#39;报告&#39;,新发现的CLR类型&#39; AppNameModel.Report&#39; 。 CLR类型到EDM类型的映射是不明确的,因为多个CLR类型与EDM类型匹配&#39;客户&#39;。以前发现CLR类型&#39;客户&#39;,新发现的CLR类型&#39; AppNameModel.Customer&#39;。 ....等等所有以前创建的实体(最后一个未列出并与遗留的objCtx策略一起使用!)

那么EF的错误是什么?我已经阅读了关于堆栈溢出的所有Q&amp; 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的属性: edmx properties

当我使用T4策略添加视图时,实际上,视图不存在于定义实体的任何文件中,仅显示在emdx可视化设计器上。我已经检查了文件.cs和.context.cs

请给出一些意见,我必须看看,我该如何解决...某个方向!感谢

1 个答案:

答案 0 :(得分:4)

我还没有发现导致问题的原因,我找到了解决方法:

在与您的edmx相关联的两个 .tt 文件上运行自定义工具。 这两个文件包含自动生成的代码,如果自动生成不再起作用,运行自定义工具会强制它根据您的edmx模型更新代码。