簡體   English   中英

asp.net mvc 5.1 mysql實體框架控制器生成

[英]asp.net mvc 5.1 mysql Entity Framework Controller Generation

我有一個asp.net mvc 5.1解決方案,其中包含3個項目,如下圖所示:

Visual Studio中我的解決方案的文件夾結構

我在項目中安裝了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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM