sql >> データベース >  >> RDS >> Mysql

MySql Connector 6.8.2 RC、Entity Framework 6、およびコードファースト

    すべてが1つのMVCプロジェクトに含まれているときに、MySQLEF6と移行が稼働していました。私はそれをレイヤー(コア[インターフェース/エンティティ]、データ、サービス、およびWeb)に分割し、ローレンが述べたのと同じエラーを受け取り始めました。

    MVCアプリから接続文字列を取得していないことがわかりました。私がしなければならなかったのは、データプロジェクト(DbContextとマッピングが存在する場所)のApp.config内に接続文字列を再作成することだけでした。

    すべてを機能させるために私が取った手順は次のとおりです。

    ステップ1) NuGetを使用してMySql.Data.Entitiesをインポートします (この投稿の現在のバージョンは6.8.3.0です)

    ステップ2) 以下をApp.configに追加します および/またはWeb.config

    <connectionStrings>
        <add name="MyDB" providerName="MySql.Data.MySqlClient" connectionString="Data Source=localhost; port=3306; Initial Catalog=mydb; uid=myuser; pwd=mypass;" />
      </connectionStrings>
      <entityFramework>
        <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
        <providers>
          <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
          <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider>
        </providers>
      </entityFramework>
    

    ステップ3) MySqlを使用するようにDbContextを設定します:

    using MyApp.Core.Entities.Directory;
    using MyApp.Data.Mapping;
    using System.Data.Entity;
    
    namespace MyApp.Data
    {
        [DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
        public class MyContext : DbContext
        {
            public MyContext() : this("MyDB") { }
            public MyContext(string connStringName) : base(connStringName) {}
            static MyContext ()
            {
                // static constructors are guaranteed to only fire once per application.
                // I do this here instead of App_Start so I can avoid including EF
                // in my MVC project (I use UnitOfWork/Repository pattern instead)
                DbConfiguration.SetConfiguration(new MySql.Data.Entity.MySqlEFConfiguration());
            }
    
            public DbSet<Country> Countries { get; set; }
    
            protected override void OnModelCreating(DbModelBuilder modelBuilder)
            {
                // I have an abstract base EntityMap class that maps Ids for my entities.
                // It is used as the base for all my class mappings
                modelBuilder.Configurations.AddFromAssembly(typeof(EntityMap<>).Assembly);
                base.OnModelCreating(modelBuilder);
            }
        }
    }
    

    ステップ4) パッケージマネージャーコンソールでデフォルトプロジェクトをデータプロジェクトに設定します

    ステップ5) enable-migrationsを使用する 、add-migrationupdate-database 通常のように



    1. LinuxでのXFSの復活

    2. MacOSXにmysqlgemをインストールできません

    3. FORのSQLクエリ動的テーブル名

    4. SQLiteクエリ:行のすべての列を取得しますか(android)?