詳細EF + MSSQL .NETプログラマの標準の多く。プログラマーとして、もちろん、これは、MSSQLデータベース、今日は単にEF + MySQLの話だけではありません。新しい読書をお勧めします。
1]まずとして、MVCプロジェクトを作成します。
あなたが作成した後、その後、それぞれMySql.Data、MySql.Data.Entity、EntityFramework(MySql.Dataに注意し、MySql.Data.Entityのバージョンは同じでなければなりません)参照nuget
2]データベース接続を作成します
1)モデルのフォルダUserTs.csを作成します。
パブリッククラスUserTs { [キー] // ID パブリック文字列ID {取得します。セットする; } //姓名 パブリック文字列cusName {取得します。セットする; } }
2)次に、MYDBContextを作成します。
//コンテキストデータベース パブリッククラスMYDBContext:DbContext { パブリックMYDBContext() :ベース( "名前= conncodefirst") { } 公共DbSet <UserTs>顧客{取得または設定;} }
3)あなたは、データベースに生成されたテーブルを参照することができ、web.configファイルで実行するために以下のコード生成を追加します。
<スタートアップ> <supportedRuntimeバージョン= " V4.0 " SKU = " .NETFramework、バージョン= V4.0 " /> </スタートアップ> <のconnectionStrings> の<add名= " conncodefirst "たconnectionString = " サーバー= localhostの;ポート= 3306 ; UID =ルート; PWD = Ee123;データベース= MYsqlTs " providerNameで= " MySql.Data.MySqlClient " /> </のconnectionStrings>
3つの一般に使用されるコマンド
まず、我々は以下の3つのコマンドを実行し、データベースを作成します。
移行-EnableAutomaticMigrations-1.Enable
2.Add-移行InitialCreate
3.Update、データベース-Verbose
エラーがあります
コンフィギュレーション・クラス生成フレーズでプラス
この .SetSqlGenerator(" MySql.Data.MySqlClient "、新 MySql.Data.Entity.MySqlMigrationSqlGenerator());
別のエラー
EF6 MySQLの错误之「指定されたキーが長すぎました。最大キー長は「767のバイトです
エラーの上に作成されたインデックスが発生し、大きなフィールド(又は複数フィールドインデックスの組み合わせ)は、マルチバイト文字セットのような制限テーブルインデックスフィールドの長さに起因するMySQLのInnoDBエンジンは、767バイトです。
文字セットタイプフィールドの例にUtf8mb4列:文字の文字あたり4分の767 = 191バイトなので、VARCHAR(255)またはchar:utf8mb4 4バイト文字がサポートインデックスフィールドのデフォルトの最大長さに設定されています(255)インデックスは、タイプフィールドを作成するために失敗します。
ソリューション:
1. NuGetはMySQL.Data.Entitiesを参照します。
2.であなたのDbContextのコードを追加します。
[DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))] public class MyContext : DbContext { public MyContext() : this() { } static MyContext () { DbConfiguration.SetConfiguration(new MySql.Data.Entity.MySqlEFConfiguration()); } }
问题解决
由于 MySQL Innodb 引擎表索引字段长度的限制为 767 字节,因此对于多字节字符集的大字段(或者多字段组合索引),创建索引会出现上面的错误。
以 utf8mb4 字符集 字符串类型字段为例:utf8mb4 是 4 字节字符集,则默认支持的索引字段最大长度是: 767 字节 / 4 字节每字符 = 191 字符,因此在 varchar(255) 或 char(255) 类型字段上创建索引会失败。
解决方法:
1.使用NuGet引用MySQL.Data.Entities。
2.在你的DbContext里添加代码:
[DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))] public class MyContext : DbContext { public MyContext() : this() { } static MyContext () { DbConfiguration.SetConfiguration(new MySql.Data.Entity.MySqlEFConfiguration()); } }