2014-09-25 88 views
2

我有一個網絡應用程序,asp.net網頁形式4.5 C#與EF6的數據庫優先, 我正在從它差不多一年的工作,一切都工作正常,直到今天,當我試圖添加一個從數據庫更新edmx的新視圖。 表加有沒有錯誤,但是從代碼是不可見的,如果我嘗試連接到EntityDataSource,我得到的消息「找不到的CLR類型。實體框架6找不到<model>的CLR類型。 <entity>

我已經看到代碼生成策略設置爲T4。 如果我更改爲「Legacy ObjectContext」新代碼在代碼中正確顯示並且EntityDataSource工作正常,我可以很好地看到與該Gridview關聯的 ,但是如果我嘗試導航到某個其他頁面時,我可以訪問其他頁面「舊」實體,我得到幾行錯誤:

指定的模式無效。錯誤: CLR類型到EDM類型的映射不明確,因爲多個CLR類型與EDM類型「報告」相匹配。以前發現CLR類型'報告',新發現CLR類型'AppNameModel.Report'。 CLR類型到EDM類型的映射不明確,因爲多個CLR類型與EDM類型「客戶」相匹配。以前發現CLR類型'客戶',新發現CLR類型'AppNameModel.Customer'。 ....等所有以前創建的實體(最後一個沒有列出,並與遺產objCtx策略一起工作!)

那麼EF怎麼了?我已經讀過堆棧溢出中的所有Q &,但似乎沒有解決方案。

我就把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策略添加視圖時,實際上視圖是n不存在於任何定義該實體的文件中,只顯示在emdx可視化設計器上。我檢查過.cs和.context.cs文件。

請給出一些意見,我必須看看,我該如何解決......有些方向!感謝

回答

2

我還沒有發現是什麼原因造成的問題,順便我已經找到了解決辦法:

運行自定義工具上的兩個.TT關聯到你的EDMX文件。 這兩個文件保存自動生成的代碼,如果自動生成不再工作,運行自定義工具,您強制它相應地更新代碼到您的edmx模型。

+1

我只是遇到了和你一樣的錯誤信息。問題似乎是我對模型類進行了一些更改,但沒有更新其他自動生成的代碼。正如你所提到的,運行自定義工具強制更新,以便解決我的問題。謝謝! – Irina 2016-12-01 22:50:09

+0

對不起,沒有要投票+1或-1 ...它並沒有讓我撤消。這種特殊的修復方式對我來說不起作用,但我很高興它爲別人做了:)奇怪的是,我仍然可以創建腳手架的視圖,但不是腳手架的控制器。 – 2018-02-03 16:49:39

相關問題