我找不到我的 connectionString 语法是如何错误的。谁能建议一种方法来解决这个问题?我在将 EF 与我的连接字符串一起使用时遇到了困难。我是 EF 的新手。
- 我正在使用 Sybase Anywhere 12 数据库。
- 我在 Web 应用程序引用的单独类库中使用 Table-First ObjectContext 和 EDMX。
- 我在我的类库中使用 Ninject 模块来绑定我的存储库。
- 我正在使用一个名为“Test”的 ODBC DataStore
- 其他信息 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>
当我在我的存储库中初始化我的 Entity/ObjectContext 时(参见下面的 using 语句),它返回一个错误:“在配置中找不到指定的命名连接,不打算与 EntityClient 提供程序一起使用,或者无效。”
using (var context = new Entities())
{
return {Linq to Entity here}
}
我在调试器上打开了 CLR 异常,发现代码在 .NET Framework 中抛出了错误:
实体连接.cs
effectiveConnectionOptions = new DbConnectionOptions(setting.ConnectionString, EntityConnectionStringBuilder.Synonyms, false);
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();
}
我可以在那里看到我的连接字符串,因此很难解析连接字符串。我尝试了许多不同的语法排列,但没有找到它接受的任何内容,包括:
- 显式命名实体文件的程序集而不是通配符(例如 metadata=res://MyDomain/MyEntities.csdl...)
- 使用 Sybase 友好的 ODBC 属性,例如 UID 代替 UserID、PWD 代替 Password,以及 DBN 代替 DataSourceName。
谢谢。