Entity framework 关键字不受支持:";数据源“;初始化实体框架上下文

Entity framework 关键字不受支持:";数据源“;初始化实体框架上下文,entity-framework,connection-string,Entity Framework,Connection String,我正在初始化实体框架对象上下文,这给了我关键字not SUPPORED error: metadata=res://*/MainDB.csdl | res://*/MainDB.ssdl | res://*/MainDB.msl;provider=System.Data.SqlClient;提供者连接字符串=“数据源=。\SQLEXPRESS;AttachDbFilename=D:\Workspace\vs\LeftTouch\LeftTouch.Web\Data\LeftTouch.mdf;集

我正在初始化实体框架对象上下文,这给了我关键字not SUPPORED error:

metadata=res://*/MainDB.csdl | res://*/MainDB.ssdl | res://*/MainDB.msl;provider=System.Data.SqlClient;提供者连接字符串=“数据源=。\SQLEXPRESS;AttachDbFilename=D:\Workspace\vs\LeftTouch\LeftTouch.Web\Data\LeftTouch.mdf;集成安全性=True;连接超时=30;用户实例=True;应用程序=EntityFramework”


我直接从正在工作的web.config获取连接字符串,只修改了文件的路径(我动态设置了该路径),并显式使用了该连接字符串,而不是使用默认值。什么可能导致此错误?

这似乎缺少
providerName=“System.Data.EntityClient”
位。确定全部都搞定了吗?

出现此错误的真正原因是连接字符串中的

如果你用单引号替换它们,那么它就可以正常工作了


(发布后,其他人可以比我更快地得到修复。)

信不信由你,将LinqPad.exe.config重命名为LinqPad.config解决了这个问题。

我通过将
EntityClient
更改回
SqlClient
,解决了这个问题,即使我使用的是Entity Framework

因此,我的完整连接字符串的格式为:

<add name="DefaultConnection" connectionString="Data Source=localhost;Initial Catalog=xxx;Persist Security Info=True;User ID=xxx;Password=xxx" providerName="System.Data.SqlClient" />



只需使用\”“,它应该可以解决问题。

确保连接字符串中有
数据源,而不是
数据源。空间很重要。相信我。我是个白痴。

好吧,那是另一个属性,忘了那个属性。现在添加的是
metadata=res://*/MainDB.csdl | res://*/MainDB.ssdl | res://*/MainDB.msl;provider=System.Data.SqlClient;提供者名称=System.Data.EntityClient;提供程序连接字符串=“{0};App=EntityFramework”
现在显示key not found:provider name。我也尝试了
providerName=…
而不是
providerName=
,但没有成功。我开始使用
EntityConnectionStringBuilder
类创建它,奇怪的是,它现在正在工作。但我仍然不知道它为什么不接受我的字符串,即使添加了内容。如果要将连接字符串传递给ObjectContent类,请确保它有单引号。如果您是从.config文件获得连接,那么可以使用“转义序列。这是我修复它的原因。对于那些不熟悉XML工作原理的人,
是引号的转义序列,因为它是XML中的保留字符。感谢它现在的工作System.Data.EntityClient.EntityConnectionStringBuilder为我做的,谢谢。请参考其他方法。我不知道是谁提出了这个
元数据=res:
,然后
res=somethingelse
到处都是语法-但是他们应该很高兴他们现在不在我的房间里:-/2018.Net EF Core类似的语法错误-SqlClient连接字符串不需要providerName。EF core的字符串中也没有引号或记号。这是Microsoft,任何事情都可能发生!这没有道理。Linqpad与这个问题有什么关系?重命名一个可执行文件有什么帮助?在我的例子中,Linqpad出现了这个特殊的错误,这样做解决了这个问题。我没有重命名可执行文件。我将.exe.config重命名为.config。无论如何,这是一个非常特殊的场景。这只会增加噪音,因为它不能解释任何事情,对我来说很有用+1上述更改可能会导致(在我的案例中)以下错误“上下文正在代码优先模式下使用从EDMX文件生成的用于数据库优先或模型优先开发的代码”。您可以在OnModelCreating()中注释抛出新的意外CodeFirstException(),但这看起来像是一个肮脏的解决方法