您的位置:首页 > 编程语言 > C#

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

2017-12-28 14:29 417 查看
情景:存在两个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禁止重新建表

        }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: