如何动态更改EF的DBContext的连接字符串

如何动态更改EF的DBContext的连接字符串,第1张

为了实现程序在运行时同时管理多个数据库,需要动态修改连接字符串。方法如下:

1. 修改Settings.Designer.cs的连接字符串,把只读属性改为可读写。注意,在新添加配置数据时,IDE会把你添加的内容删除。还需再次添加。

public string ConnectionString {get {

return ((string)(this["ConnectionString"]))}//此为新添加的。set {

this["ConnectionString"] = value}}

2. 在实例化适配器前修改字符串。

如果只是想修改连接的计算机名(或者sql服务名),我试过下面的代码是成功的。我的步骤,先新建Model,运行成功,然后修改app.config里的连接字符串里的计算机名,运行报错,然后在用代码手动修改回正确的计算机名,运行成功。

        static void Main(string[] args)

        {

            NorthwindEntities en = new NorthwindEntities()

            string constr = @"data source=.\sqlexpress

initial catalog=Northwindintegrated security=True

MultipleActiveResultSets=TrueApp=EntityFramework&quot"

            en.Database.Connection.ConnectionString = constr

            Console.WriteLine(en.Employees.Count())

            Console.ReadLine()

        }

自定义的类 不能使用using。需要释放或者关闭的可以用using 比如

using(SqlConnection conn=new SqlConnection()){}

你只能

DashengDbContext context = new DashengDbContext()

contenxt.方法()

假设是AppSettings节点

string connectionString=

System.Configuration.ConfigurationManager.AppSettings["RSDbContext"]

或者 直接读取xml文件 即节点add 下的属性name=RSDbContext的

模仿下面的读取xml代码

//using System.Xml

/// <summary>

        /// 通过键获取appSettings的值

        /// </summary>

        /// <param name="key"></param>

        /// <returns></returns>

        public static string GetValueByKey(string key) 

        {

            XmlDocument doc = new XmlDocument()

            doc.Load(AppDomain.CurrentDomain.BaseDirectory + "config.xml")

            XmlNode node = doc.DocumentElement.ChildNodes[1] 

            //找到appSettings节点 

            foreach (XmlNode childNode in node.ChildNodes)

            {

                if (childNode.Name == "add" && childNode.Attributes["name"] != null && childNode.Attributes["name"].InnerText == key)

                {

                    return childNode.Attributes["connectionString"].InnerText

                }

            }

            return ""

        }


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9995202.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存