![](/img/trans.png)
[英]DataAnnotations with EntityFramework (Database First) method
[英].NET 4.0 DataAnnotations GAC/EntityFramework conflict
我正在嘗試使用 Entity Framework 6 為 Microsoft .NET 4.0 構建一個 ASP.NET 網站。該網站在web.config
明確針對 .NET 4.0:
<compilation debug="true" targetFramework="4.0">
, IIS Express 在applicationhost.config
的應用程序池也針對 .NET 4.0:
<add name="Clr4ClassicAppPool" managedRuntimeVersion="v4.0" managedPipelineMode="Classic" CLRConfigFile="%IIS_USER_HOME%\\config\\aspnet.config" autoStart="true" />
當網站啟動時,會顯示一些CS0433
編譯器錯誤,如下所示:
error CS0433: The type "System.ComponentModel.DataAnnotations.Schema.TableAttribute" exists in both "c:\\Windows\\Microsoft.NET\\assembly\\GAC_MSIL\\System.ComponentModel.DataAnnotations\\v4.0_4.0.0.0__31bf3856ad364e35\\System.ComponentModel.DataAnnotations.dll" and "c:\\Users\\%username%\\AppData\\Local\\Temp\\Temporary ASP.NET Files\\vs\\e798ee36\\2b3f5a24\\assembly\\dl3\\fd34a92a\\0052703a_0990d101\\EntityFramework.DLL"
據我所知,.NET 4.0 中不應該有System.ComponentModel.DataAnnotations
程序集,或者至少它不應該包含TableAttribute
、 KeyAttribute
等類。我唯一的線索是錯誤頁面的底線,這說
Microsoft .NET Framework, version:4.0.30319; ASP.NET, version:4.6.1055.0
但是,我不知道如何專門更改網站的 ASP.NET 版本(當然,如果這是問題的來源)。
您是否嘗試將編譯批處理設置為 false?
<compilation debug="false" batch="false">
我假設您的 App_Code 文件夾中有代碼(至少可能是您的實體框架類?)。
現在您可以將代碼移出那里,並預編譯所有內容,以便您部署網站程序集而不是任何源文件。
否則,您真的需要查看您的項目並確保沒有任何內容引用 System.ComponentModel.DataAnnotations。
此外,檢查項目根目錄或 App_Code 文件夾中的任何 web.config 並確保沒有
<add assembly="System.ComponentModel.DataAnnotations, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
在 system.web/compilation/assemblies 下。 如果沒有,你甚至可以嘗試放入
<remove assembly="System.ComponentModel.DataAnnotations, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
例如:
<compilation>
<assemblies>
<remove assembly="System.ComponentModel.DataAnnotations, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</assemblies>
</compilation>
您還可以檢查以確保它運行的是早期版本的 ASP.NET,以便它選擇不具有 Schema 屬性的 DataAnnotations 程序集版本(如 4.5+ 框架版本那樣):
<configuration>
<system.web>
<httpRuntime targetFramework="4.0" />
</system.web>
</configuration>
嘿,你能檢查一下你的項目嗎。請檢查不應該有兩個具有相同屬性的模型。模型也可以是實體框架類模型
檢查項目的所有 NuGet 包是否都已更新,或者是否安裝了任何您不想要的包。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.