Using entity framework on multiple databases

后端 未结 2 1519
悲&欢浪女
悲&欢浪女 2020-12-01 04:23

I am writing a payroll system that will integrate with a pre-existing system. The original system had a master database that handled user management and some global configur

2条回答
  •  醉梦人生
    2020-12-01 05:01

    EF6 has better support for multiple DB access from Same context. Here is a snippet from EF5. Managing the database initializer setting prior is important. You may not want to trigger ANY migrations. i.e, use this before

    Database.SetInitializer(new ContextInitializerNone());

    but to answer the question: Yes you can

    var conn = GetSqlConn4DbName(dataSource,dbName );
    var ctx = new MyDbContext(conn,true);
    
    
    
    public DbConnection GetSqlConn4DbName(string dataSource, string dbName) {
            var sqlConnStringBuilder = new SqlConnectionStringBuilder();
            sqlConnStringBuilder.DataSource = String.IsNullOrEmpty(dataSource) ? DefaultDataSource : dataSource;
            sqlConnStringBuilder.IntegratedSecurity = true;
            sqlConnStringBuilder.MultipleActiveResultSets = true;
    
            var sqlConnFact = new SqlConnectionFactory(sqlConnStringBuilder.ConnectionString);
            var sqlConn = sqlConnFact.CreateConnection(dbName);
            return sqlConn;
        }
    
    
     public class ContextInitializerNone : IDatabaseInitializer where TContext : DbContext
    {
        public void InitializeDatabase(TContext context) {  }
    }
    

    Also see StackOverflow answer using migration, sample code, and dynamic db connection

提交回复
热议问题