Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.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
C# 实体框架连接字符串的奇怪行为_C#_Connection String_Entity Framework 6 - Fatal编程技术网

C# 实体框架连接字符串的奇怪行为

C# 实体框架连接字符串的奇怪行为,c#,connection-string,entity-framework-6,C#,Connection String,Entity Framework 6,好吧,这是个奇怪的问题。我有一个包含两个项目的解决方案。项目A引用项目B。项目B本质上是一个类库项目,它包含一个实体框架模型,首先创建数据库。在项目A的app.config中,我有几个连接字符串,它们指向一台服务器上的不同数据库。我的软件很好用。以下是我的连接字符串: <add name="LRIP 1, 2, 1A" connectionString="metadata=res://*/Kreus2Model.csdl|res://*/Kreus2Model.ssdl|res://*/K

好吧,这是个奇怪的问题。我有一个包含两个项目的解决方案。项目A引用项目B。项目B本质上是一个类库项目,它包含一个实体框架模型,首先创建数据库。在项目A的app.config中,我有几个连接字符串,它们指向一台服务器上的不同数据库。我的软件很好用。以下是我的连接字符串:

<add name="LRIP 1, 2, 1A" connectionString="metadata=res://*/Kreus2Model.csdl|res://*/Kreus2Model.ssdl|res://*/Kreus2Model.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=KREUS;initial catalog=Kreus2;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />    
<add name="ECP 1" connectionString="metadata=res://*/Kreus2Model.csdl|res://*/Kreus2Model.ssdl|res://*/Kreus2Model.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=KREUS;initial catalog=Kreus2ECP1;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
<add name="ECP2" connectionString="metadata=res://*/Kreus2Model.csdl|res://*/Kreus2Model.ssdl|res://*/Kreus2Model.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=KREUS;initial catalog=Kreus2ECP2;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
<add name="TR-12" connectionString="metadata=res://*/Kreus2Model.csdl|res://*/Kreus2Model.ssdl|res://*/Kreus2Model.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=KREUS;initial catalog=Kreus2TR_12;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
我的同事添加了相同的功能(下拉框和上下文的构造函数,上下文使用字符串parm作为连接字符串名称)

TL;DR:我的同事和我都使用同一个数据库first EF模型。我的连接字符串剪切并粘贴到他的app.config中就是不起作用,即使我们使用的是同一个精确的模型(它在我们的程序中都引用的类库项目中)


更新:正如下面的答案所指出的,问题的最终根源是我的同事将连接字符串复制到了错误的app.config文件中。他的解决方案中有两个项目,一个用于GUI,一个用于业务逻辑,使用项目B(EF模型)。连接字符串应已应用于GUI项目(其执行项目)中的app.config文件。相反,它们被复制到了他的业务逻辑项目中的app.config文件中,该文件甚至没有被使用。

它们指向同一个项目吗?如果两者都这样做,则连接字符串必须驻留在控制可执行文件中。(请参阅)。

在创建模型时,Model first或database first调用以使用.edmx文件。由CodeFirst生成的代码将在on model creating方法中抛出上述异常,因为Code first不使用它

  • 代码扫描将显示此方法是否返回异常
  • 如果是这种情况,请更改连接字符串以使用“代码优先”格式

在我看到的所有实例中,都会出现此错误,因为SQL连接字符串被传递到数据库第一个上下文(另一种选择是您在问题中列出的)。如果不向我们展示他用来实例化DbContext的所有代码,就不可能真正回答这个问题。@ErikPhilips我的同事正在按上述方式实例化该上下文:
var dataContext=new kreus2 context…
我们都以相同的方式实例化该上下文,甚至在他将我的连接字符串复制到他的app.config和他的连接字符串工作之前。他使用的“Kreus2Context”上下文与我的“LRIP 1,2,1a”上下文完全相同,只是名称不同。他可以使用“LRIP”名称创建上下文,但是当他尝试在LINQ语句中使用它时,他会得到上面的错误,唯一不同的是连接字符串的名称。的可能重复项
<add name="Kreus2Context" connectionString="metadata=res://*/Kreus2Model.csdl|res://*/Kreus2Model.ssdl|res://*/Kreus2Model.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=KREUS;initial catalog=Kreus2;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
var dataContext = new Kreus2Context(name); // name is what the user chose for the drop-down