如何将SQL连接字符串与ADO.NET实体数据模型一起使用

Jas*_*ras 5 c# entity-framework

我试图以一种我可以动态改变哪个数据库的方式使用ADO.NET实体数据模型.更改数据库可能需要一个全新的连接字符串.某些数据库位于不同的服务器上 所以我需要能够传递我的ADO.NET实体数据模型一个自定义连接字符串,如'server = severaddress; database = database1; User ID = test; Password = test1234;'

编辑:我的实体类实现ObjectContext.我可以使用的三个构造函数是默认的,传入connectionString,传入EntityConnection.当我使用重载构造函数时,我会收到错误,说它无法识别connectionstring中的"server".

我需要使用自定义连接字符串实例化我的存储库,或者能够在使用之前设置它.

Lad*_*nka 7

ObjectContext在其构造函数中接受实体连接字符串.实体连接字符串由三部分组成:

  • 元数据位置(EDMX文件生成的映射XML的位置)
  • 数据存储提供商
  • 数据存储连接字符串(这是您要提供的)

你有几种方法可以实现你想要的.通常你需要的是组合连接字符串的两个部分:

string format = "metadata=res://*/Model.csdl|res://*/Model.ssdl|res://*/Model.msl;provider=System.Data.SqlClient;provider connection string=\"{0}\"";
string connectionString = "server=severaddress;database=database1;UserID=test;Password=test1234;"

var context = ModelContext(String.Format(format, connectionString));
Run Code Online (Sandbox Code Playgroud)

该格式描述了作为程序集和Sql提供程序中的资源包含的Model.edmx中元数据的位置.第二部分是你的连接字符串.

请注意,只有在所有数据库具有相同的架构并使用相同的提供程序时,此方法才有效.