Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 有没有办法先更改数据库中的连接字符串?_Entity Framework_Database First - Fatal编程技术网

Entity framework 有没有办法先更改数据库中的连接字符串?

Entity framework 有没有办法先更改数据库中的连接字符串?,entity-framework,database-first,Entity Framework,Database First,我有几个数据库,它们的模式是相同的。首先使用数据库时,在创建edmx文件时指定连接字符串。我想知道,有没有办法更改连接字符串?这是,因此我可以选择要操作的数据库。更改web.config文件中的连接字符串 <connectionStrings> <add name="SandBoxEntities" connectionString="metadata=r... /> </connectionStrings> .我们在web.configs

我有几个数据库,它们的模式是相同的。首先使用数据库时,在创建edmx文件时指定连接字符串。我想知道,有没有办法更改连接字符串?这是,因此我可以选择要操作的数据库。

更改web.config文件中的连接字符串

  <connectionStrings>
    <add name="SandBoxEntities" connectionString="metadata=r... />
  </connectionStrings>


.

我们在web.configs中不存储连接字符串,因此接受的解决方案对我们不起作用。如果只是尝试通过基本DbContext构造函数提供连接字符串,则会出现以下异常:

如果在代码优先模式下使用,则使用T4模板为数据库优先和模型优先开发生成的代码可能无法正常工作。要继续先使用数据库或先使用模型,请确保在正在执行的应用程序的配置文件中指定了实体框架连接字符串。要使用这些首先从数据库生成的类或首先从模型生成的类,请使用代码,首先使用属性或DbModelBuilder API添加任何其他配置,然后删除引发此异常的代码

要解决此问题,请按如下所示创建上下文的分部类,并使用附加的EF元数据格式化连接字符串(其中MyContext是您的上下文模型名称(例如,您的型号名称为MyModel.edmx,下面代码中的
MyContext
被替换为
MyModel
,并使用了所有三个扩展名.csdl、.ssdl、.msl)):


您可以在web.config中定义多个连接字符串,然后在代码或作业中使用它们。 例如:`

<connectionStrings>
  <add name="conStr1" connectionString="metadata=r... />
</connectionStrings>`

<connectionStrings>
  <add name="conStr2" connectionString="metadata=r... />
</connectionStrings>`
好的。现在您可以在代码中使用以下内容:

using (var db = new MyContext("name=conStr1"))
{
  //your code here
}
然后

using (var db = new MyContext("name=conStr2"))
{
   //your code here
}

我知道如何在web.config中设置连接字符串,我想知道的是如何在运行时更改它,这样我就可以选择使用哪个数据库。在我创建edmx文件时,连接字符串已经设置好了,有没有办法在运行时更改它?好的--我编辑了我的答案,并提供了一个链接,向您展示了如何正确地执行此操作。这个问题答案很简单:。这个链接对我来说再也没有任何用处了。为了让这个对我有用,我需要将“简单”改为一个简单的引语,如答案中所述:简单明了。
using (var db = new MyContext("name=conStr1"))
{
  //your code here
}
using (var db = new MyContext("name=conStr2"))
{
   //your code here
}