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

ASP.NET5のMySQLでEntityFramework6を使用するにはどうすればよいですか?

    Web.configはASP.NET5で使用されなくなったため、コードベースの構成 代わりに構成します。これを行うには、DbConfigurationから継承する新しいクラスを作成します。

    public class MyDbConfiguration : DbConfiguration
    {
        public MyDbConfiguration()
        {
            // Register ADO.NET provider
            var dataSet = (DataSet)ConfigurationManager.GetSection("system.data");
            dataSet.Tables[0].Rows.Add(
                "MySQL Data Provider",
                ".Net Framework Data Provider for MySQL",
                "MySql.Data.MySqlClient",
                typeof(MySqlClientFactory).AssemblyQualifiedName
            );
    
            // Register Entity Framework provider
            SetProviderServices("MySql.Data.MySqlClient", new MySqlProviderServices());
            SetDefaultConnectionFactory(new MySqlConnectionFactory());
        }
    }
    

    構成の最初の部分は、system.dataに新しい構成エントリを動的に追加することにより、実行時にADO.NETプロバイダーを登録するためのハックです。 セクション。これは非常にハッキーですが、正しく機能しているように見えます。

    接続文字列をconfig.jsonに追加します Web.configではなく :

    {
      "Data": {
        "DefaultConnection": {
          "ConnectionString": "Server=localhost; Database=test; Uid=test; Pwd=password;"
        }
      }
    }
    

    DbContextを変更します 正しい構成と接続文字列を使用するには:

    [DbConfigurationType(typeof(MyDbConfiguration))]
    public class MyContext : DbContext
    {
        public MyContext(IConfiguration config)
          : base(config["Data:DefaultConnection:ConnectionString"])
          {
          }
          // ...
    }
    

    MyContextを登録する Startup.csの依存性注入コンテナ内 :

    public void ConfigureServices(IServiceCollection services)
    {
        // ...
        services.AddScoped<MyContext>();
    }
    

    次に、コンストラクタインジェクションを使用してMyContextを取得できます。 コントローラーに。

    詳細については、http://dan.cx/のブログ投稿をご覧ください。 2015/08 / entity-framework-6-mysql-aspnet 、およびhttps://github.com/Daniel15/EFExample のサンプルプロジェクト




    1. MySQL全文検索、MATCHに対して誤った引数を取得するのはなぜですか

    2. コメントシステムの構築に関するアドバイス

    3. cxを使用してUnicodeを挿入できない-Oracle

    4. Sequelizeでクエリタイムアウトを設定するにはどうすればよいですか?