C#EFとMySqlの穴

6445 ワード

ずっとmysqlとefを使いたかったです.そして何度も試しても、やはりsqlseverが実の息子だと感嘆するしかない.
今日は職場でもう一度試して、それから成功して、出会った問題を記録しました.
 
まずインストールパッケージとドライバ?です.
約束してくれData/ MySql.Data.Entity.EF 6/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   
 2     
 3       
 4         
 5       
 6     
 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>

 
 
そして運転は2つの異常です
 
Specified key was too long; max key length is 767 bytes.
Model compatibility cannot be checked because the database does not contain.
 
この2つの異常は私が長い時間をかけて調べて、いろいろな奇妙な解決策を調べました.
最終的な発見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 Users { get; set; }
13 
14 
15     }

 
転載先:https://www.cnblogs.com/Aaxuan/p/10552147.html