Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Hai nhà cung cấp khác nhau trên cùng một tệp cấu hình

Trước hết, bạn đang sử dụng các lớp cấu hình sai. DbConfigurationType cần một kiểu kế thừa từ DbConfiguration chứ không phải DbMigrationsConfiguration <>.

DbMigrationsConfiguration thực sự chỉ được sử dụng cho Migrator và DatabaseInitializers.

public class MyDbConfiguration : DbConfiguration
{
    public MyDbConfiguration()
    {
        this.SetDefaultConnectionFactory(new System.Data.Entity.Infrastructure.SqlCeConnectionFactory("System.Data.SqlServerCe.4.0"));

        this.SetProviderServices("System.Data.SqlServerCe.4.0", SqlCeProviderServices.Instance);

        this.AddInterceptor(new NLogCommandInterceptor());// guardar logs

        this.SetMigrationSqlGenerator("System.Data.SqlServerCe.4.0", () => new SqlCeMigrationSqlGenerator());
    }
}

[DbConfigurationType(typeof(MyDbConfiguration))]
public class TestContext : DbContext

Đáng tiếc là không thể đặt nhiều DefaultConnectionFactories ngay cả với nhiều DbConfigurations.

Trong trường hợp của bạn, bạn sẽ phải lưu trữ các chuỗi kết nối trong app.config và chuyển tên cho hàm tạo DbContext.

public class TestContext : DbContext
    {
        public TestContext()
            : base("name=MyConnectionString")
        {

        }

Kết nối sẽ được khởi tạo dựa trên tên nhà cung cấp cho MyConnectionString trong app.config

Hoặc nếu bạn không muốn chuỗi kết nối trong app.config của mình, chỉ cần chuyển một DbConnection đã được khởi tạo đến phương thức khởi tạo DbContext

public class TestContext : DbContext
    {
        public TestContext()
            : base(new SqlCeConnection(GetConnectionString()),true)
        {

        }

Hoặc nếu bạn không muốn khởi tạo một Kết nối cụ thể, hãy sử dụng DbProviderFactory.

public class TestContext : DbContext
    {
        public TestContext()
            : base(GetConnection(),true)
        {

        }

        public static DbConnection GetConnection() { 
            var factory = DbProviderFactories.GetFactory("System.Data.SqlServerCe.4.0");
            var connection = factory.CreateConnection();
            connection.ConnectionString = "Data Source=C:/teste2.sdf;Persist Security Info=False;";
            return connection;
        }


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP không thể kết nối với mysql thông qua python

  2. Chọn N * nhóm * đầu tiên bằng cách sử dụng mysql

  3. Làm cách nào để tự động xóa các hàng dữ liệu khỏi bảng mysql sau 24 giờ kể từ khi dữ liệu vào bảng?

  4. Những ký tự nào phải được thoát để ngăn chặn việc tiêm SQL (của tôi)?

  5. Làm thế nào để kết nối Android với PHP và MySQL?