C#根据不同的连接字符串去访问不同的Server

情景:存在两个Server,一个本机Debug的情况下,根据server与本机上存在的特有的文件来执行不同的连接方式的动作

Database只有一个,存放在新server中,旧server可以访问到新servers 中Database

MVC中的Web.config中连接字符串

   <connectionStrings>
    <add name="MySQLConContext_New" connectionString="Server= ;Port= ;SqlServerMode=true;Database= ;UserId= ;Password= ;CharSet=utf8" providerName="MySql.Data.MySqlClient" />
    <add name="MySQLConContext" connectionString="Server= ;Port= ;SqlServerMode=true;Database= ;UserId= ;Password= ;CharSet=utf8" providerName="MySql.Data.MySqlClient"/>
  </connectionStrings>

Solution中class中的方法:

using System.Runtime.Remoting.Messaging;

  public class ContextFactory
    {

 public static   MyDbContext GetCurrentContext(){

//根据执行的环境不一样,存在的文档

 bool SwitchFile = File.Exists(@"C:\PCS\10.41.16.93.txt");  //server1上存在的txt文档

bool SwitchFileNew = File.Exists(@"C:\PCS\10.41.23.172.txt");//server2上存在的txt文档

MyDbContext  _DbContext = CallContext.GetData("MyContext") as MyDbContext;//初始为null

if (_DbContext == null)
            {
           if (SwitchFileNew)
               {
               _DbContext = new MyDbContext("MySQLConContext_New");//执行时如为true,执行MyDbContext(string)方法
              }
           else if (SwitchFile)
            {
             _DbContext = new MyDbContext("MySQLConContext");
               }       

             CallContext.SetData("MyContext", _DbContext);
            }
            return _DbContext;

} }


using System.Data.Entity;
using System.Configuration;
using System.Data.Entity.ModelConfiguration.Conventions;

public class MyDbContext:DbContext//连接数据库
 {

        public DbSet<User> Users { get; set; }
        public DbSet<Role> UserGroups { get; set; }  

//构造函数 

 public MyDbContext(string conn):base(conn)//根据上一个方法传过来参数匹配Web.config里的字符串去连接不同的server
        {
            Database.CreateIfNotExists();
        }

 protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();//j禁止重新建表
        }

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值