关键字不支持数据源

我有一个默认的成员资格数据库的asp.net-mvc应用程序。 我正在通过ADO.NETentity framework访问它。

现在我想把它移动到IIS,但出现了一些问题。 我不得不安装SQL Server Management Studio,创build新的数据库,导入那里以前.MDF文件的所有数据。 只有剩下要做的事情(据我所知)是改为连接string。 不过,我并没有真正体验到这一点,并不断得到不支持的关键字:“数据源”。 例外。 这是我的连接string:

<add name="ASPNETDBEntities" connectionString="Data Source=MONTGOMERY-DEV\SQLEXPRESS;Initial Catalog=ASPNETDB;Integrated Security=True;" providerName="System.Data.EntityClient" /> 

任何想法,怎么了?

你有一个有效的ADO.NET连接string – 但它不是一个有效的entity framework连接string。

EF连接string看起来像这样:

 <connectionStrings> <add name="NorthwindEntities" connectionString= "metadata=.\Northwind.csdl|.\Northwind.ssdl|.\Northwind.msl; provider=System.Data.SqlClient; provider connection string=&quot;Data Source=SERVER\SQL2000;Initial Catalog=Northwind;Integrated Security=True;MultipleActiveResultSets=False&quot;" providerName="System.Data.EntityClient" /> </connectionStrings> 

你缺lessEF连接string中的所有metadata=providerName=元素……你基本上只有provider connection string部分包含了什么。

使用EDMXdevise器应该在你的web.config或app.config中为你创build一个有效的EF连接string。

渣子

更新:好吧,我明白你要做什么:你需要第二个“ADO.NET”连接string只为ASP.NET用户/成员资格数据库。 你的string是好的,但是providerName是错误的 – 它必须是“System.Data.SqlClient” – 这个连接不使用ENtity Framework – 不要为它指定“EntityClient”!

 <add name="ASPNETMembership" connectionString="Data Source=MONTGOMERY-DEV\SQLEXPRESS;Initial Catalog=ASPNETDB;Integrated Security=True;" providerName="System.Data.SqlClient" /> 

如果您指定providerName=System.Data.EntityClient ==> Entity Framework连接string(与元数据=和所有内容)。

如果您需要并指定providerName=System.Data.SqlClient ==> 直接ADO.NET SQL Server连接string没有所有EF添加

当您通过索引引用web.config(或app.config)连接string时,可能会发生此问题…

 var con = ConfigurationManager.ConnectionStrings[0].ConnectionString; 

基于零的连接string并不总是在你的configuration文件中,因为它从默认的堆栈中inheritance了其他的 。

推荐的方法是按名称访问您的连接…

 var con = ConfigurationManager.ConnectionStrings["MyConnection"].ConnectionString; 

或先清除configuration文件中的connnectionStrings元素…

 <connectionStrings> <clear/> <add name="MyConnection" connectionString="... 

我遇到了同样的问题。
但是这个代码很好用。

 <add name="MyCon" connectionString="Server=****;initial catalog=PortalDb;user id=**;password=**;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" /> 

当我开始使用Entity Framework时,我遇到了这个问题,当我没有将旧的SQL Server连接更改为EntityFrameWork连接时,就发生了这个问题。

解决方法:在通过web.config文件“add name =” Entities “connectionString = XYZ”进行连接的文件中,确保您指的是正确的连接,在我的情况下,我必须这样做

  public static string MyEntityFrameworkConnection { get { return ConfigurationManager.ConnectionStrings["Entities"].ConnectionString; } } 

每当需要build立连接时调用MyEntityFrameworkConnection。

 private string strConnection= Library.DataAccessLayer.DBfile.AdoSomething.MyEntityFrameworkConnection; 

注意:将实体模型添加到解决scheme时,将自动生成web.config文件中的连接。

我知道这是一个旧的post,但最近我得到了同样的错误,所以为了什么是值得的,这里是另一个解决scheme:

这通常是一个连接string错误,请检查你的连接string的格式,你可以查看'entity frameworkconnectionstring'或按照上面的build议。

然而,在我的情况下,我的连接string是好的,错误是由完全不同的东西引起的,所以我希望这可以帮助某人:

  1. 首先,我有一个EDMX错误 :在EDMX中有一个新的数据库表,并且该表不存在于我的数据库(有趣的是错误,错误不是很明显,因为它没有显示在我的EDMX或输出窗口中,而是它在“警告”下的“错误列表”窗口中隐藏在视觉工作室中)。 我通过将缺less的表添加到我的数据库来解决这个错误。 但是,我实际上忙于尝试添加一个存储过程,仍然得到'数据源'错误,所以请看下面的解决方法:

  2. 存储过程错误 :我试图添加一个存储过程,每次我通过EDMXdevise窗口添加它,我得到一个“数据源”错误。 解决的办法是将存储过程添加为空白(我保存了存储的proc名称和声明,但是删除了存储过程的内容,并replace为“select 1”,并重试将其添加到EDMX中)。 有效! 据推测EF不喜欢我存储的过程中的东西。 一旦我添加了proc到EF,我就可以更新我的数据库上的proc的内容到我想要的和它的工作,'数据源'错误解决。

怪事

我得到了同样的错误,然后更新我的连接string如下,

 <add name="EmployeeContext" connectionString="data source=*****;initial catalog=EmployeeDB;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" /> 

试试这个会解决你的问题。