C# EF 與 MySql 的那些坑


之前一直想用 mysql 和 ef 。然后多次嘗試也只能感嘆 還是 sqlsever 是親兒子。

今天在單位又嘗試了一次,然后就成功了,記錄一下遇到的問題。

 

首先是安裝包和驅動?。

保證 MySql.Data / MySql.Data.Entity.EF6 / mysql Connector/NET 版本對應一致

2019.03  我使用的版本是· 6.10.8 

Connector/NET 下載地址: https://dev.mysql.com/downloads/connector/net/6.8.html

 

連接串:

1  <connectionStrings>
2     <add name="xxx" connectionString="Server=localhost;Database=bugbus;User=root;Password=;charset=utf8" providerName="MySql.Data.MySqlClient" />
3   </connectionStrings>

安裝完后 EF的配置會自動添加 可以確認一下:

標紅的這一段要手動加。databaseInitializer是初始化的類綁定。

 1   <entityFramework>
 2     <contexts>
 3       <context type="DB.AppContext,DB">
 4         <databaseInitializer type="DB.Initializer,DB"></databaseInitializer>
 5       </context>
 6     </contexts>
 7     <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
 8       <parameters>
 9         <parameter value="mssqllocaldb" />
10       </parameters>
11     </defaultConnectionFactory>
12     <providers>
13       <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
14       <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.10.8.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
15     </providers>
16   </entityFramework>

 

 

然后運行就是是兩個異常

 

Specified key was too long; max key length is 767 bytes。

Model compatibility cannot be checked because the database does not contain。

 

這兩個異常花了我好久時間查來查去,各種千奇百怪的解決方案。

最后發現 https://www.cnblogs.com/Linner/p/6297223.html 的解決方法簡單的解決了問題

 1  [DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
 2     public class AppContext : DbContext
 3     {
 4         static AppContext()
 5         {
 6             DbConfiguration.SetConfiguration(new MySql.Data.Entity.MySqlEFConfiguration());
 7         }
 8 
 9         public AppContext() : base("xxxxxx")
10         { }
11 
12         public DbSet<System.User> Users { get; set; }
13 
14 
15     }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM