【发布时间】:2012-12-05 01:25:41
【问题描述】:
我找不到我的 connectionString 语法有什么问题。谁能建议一种方法来解决这个问题?我在将 EF 与我的连接字符串一起使用时遇到了困难。我是 EF 的新手。
- 我正在使用 Sybase Anywhere 12 数据库。
- 我在 Web 应用程序引用的单独类库中使用 Table-First ObjectContext 和 EDMX。
- 我在我的类库中使用了一个 Ninject 模块来绑定我的存储库。
- 我正在使用名为“Test”的 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>
当我在我的存储库中初始化我的 Entity/ObjectContext(参见下面的 using 语句)时,它返回一个错误:“在配置中找不到指定的命名连接,不打算与 EntityClient 提供程序一起使用,或者无效。”
using (var context = new Entities())
{
return {Linq to Entity here}
}
我在调试器上开启了CLR异常,发现代码在这里.NET Framework中抛出了错误:
EntityConnection.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。
谢谢。
【问题讨论】:
-
你如何实际设置连接字符串?您的连接实际上是什么样的?
-
抱歉,连接字符串需要特殊的 html 字符才能显示。现在应该可以正常显示了。
-
谢谢。我想我不够清楚 - 你能显示
Entities类的构造函数来显示连接字符串是如何设置的吗?这段代码是你自己写的还是VS生成的? -
@Pawel 请参阅上面的编辑代码。它是由 EDMX 设计器生成的。
-
@Pawel 我将连接字符串从 edmx 复制并粘贴到 Web 应用程序的 web.config 中,用 xml 友好的 " 替换提供程序字符串中的双引号
标签: entity-framework entity-framework-4 connection-string