我无法找到我的connectionString语法是如何错误的。任何人都可以提出一个方法来解决这个问题?我用连接字符串使用EF有困难。我是EF新手。实体框架ConnectionString解析异常
- 我正在使用Sybase Anywhere 12数据库。
- 我正在使用Table-First ObjectContext和EDMX在Web应用程序重新启动的单独的类库中。
- 我在我的类库中使用Ninject模块来绑定我的存储库。
- 我使用ODBC数据存储所谓的 “测试”
- 其他信息EF 4.3.1.0,.NET 4,VS2010
- 我主要的Web应用程序的web.config有EF连接字符串复制到它:
<connectionStrings> <add name="Entities"connectionString="metadata=res://*/MyEntities.csdl|res://*/MyEntities.ssdl|res://*/MyEntities.msl;provider=iAnywhere.Data.SQLAnywhere;provider connection string="UserID=aUser;Password=aPassword;DataSourceName=Test"" providerName="iAnywhere.Data.SQLAnywhere"/> </connectionStrings>
当我初始化我的实体/ ObjectContext的在我的仓库(参见使用下面的语句),它返回一个错误:“指定的命名连接或者未在配置中发现的,不打算与使用EntityClient提供程序,或无效。“
using (var context = new Entities())
{
return {Linq to Entity here}
}
我打开CLR异常的调试,发现该代码引发错误在.NET Framework这里:
EntityConnection.cs
effectiveConnectionOptions =新DbConnectionOptions(setting.ConnectionString,EntityConnectionStringBuilder 。同义词,错误);
EDMX设计器生成的:
/// <summary>
/// Initializes a new Entities object using the connection string found in the 'Entities' section of the application configuration file.
/// </summary>
public Entities() : base("name=Entities", "Entities")
{
this.ContextOptions.LazyLoadingEnabled = true;
OnContextCreated();
}
我可以看到我的连接字符串在那里,所以它是有困难的时候解析的connectionString。我已经尝试了语法的多种不同的排列,并没有发现任何东西它接受包括:
- 明确命名大会实体文件,而不是一个通配符(如元数据= RES://MyDomain/MyEntities.csdl .. )
- 使用Sybase友好的ODBC属性(例如UID而不是UserID,PWD而不是密码)和DBN(而不是DataSourceName)。
感谢。
你如何设置连接字符串?你的连接实际上是怎样的? – Pawel
对不起,连接字符串需要显示特殊的html字符。它现在应该显示正常。 – evodev
谢谢。我认为我还不够清楚 - 你能显示“实体”类的构造函数来显示连接字符串是如何设置的吗?你是自己编写这段代码还是由VS生成的? – Pawel