![](/img/trans.png)
[英]ASP.NET MVC / Entity Framework - Controller generation is somehow using old properties
[英]asp.net mvc 5.1 mysql Entity Framework Controller Generation
我有一個asp.net mvc 5.1解決方案,其中包含3個項目,如下圖所示:
我在項目中安裝了Ninject,FakeitEasy,MySql nuget軟件包,並且在項目中使用了存儲庫模式,因此我有一個IRepository通用接口,IDbContext接口和一個具體的存儲庫通用類(所有這些都在AccountManager.Domain中)。 通過所有Ninject和mysql的所有設置,我構建了解決方案,到目前為止效果很好,直到嘗試使用Entity Framework提供的腳手架選項添加控制器,並且出現錯誤消息:
不支持使用相同的DbCompiledModel檢索針對“ AccountManager.Domain.Entities.Bank”的元數據,以針對不同類型的數據庫服務器創建上下文。 而是為每種使用的服務器類型創建一個單獨的DbCompiledModel。
我第一次接觸sqlite和EF代碼時就看到了這一點。 又是什么意思? 有人看到我沒看到的觀點嗎?
我已經將這種煩惱塞了一段時間,發現它很簡單。 像這樣用mysqlefconfig裝飾上下文類:
[DbConfigurationType(typeof(MySqlEFConfiguration))]
幫助上下文對EF自動創建的遷移表進行必要的調整,使其可與MySql一起使用,這是我的控制器完全不使用腳手架的原因。 我有想法嘗試從https://stackoverflow.com/users/3671905/yurko對此進行評論,而腳手架效果很好。
唯一需要注意的是,在完成腳手架之后,您需要取消注釋,以便應恢復EF所需的所有MySQL特性。 與創建文件和編輯基礎結構文件相比,我更喜歡屬性配置。
好吧,對我而言,唯一起作用的是刪除配置文件中的所有內容(app.config或web.config)並粘貼以下內容:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<system.data>
<DbProviderFactories>
<remove invariant="MySql.Data.MySqlClient" />
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description="Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data" />
</DbProviderFactories>
</system.data>
<connectionStrings>
<add name="MyContext" connectionString="server=127.0.0.1; User Id=root; Password=password; Persist Security Info=True; database=Test;" providerName="MySql.Data.MySqlClient" />
</connectionStrings>
</configuration>
在那之后,我已經能夠生成控制器,我希望它會有所幫助。 (當然,必須正確配置連接字符串)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.