【问题标题】:Entity Framework ConnectionString Parsing Exception实体框架 ConnectionString 解析异常
【发布时间】: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=&quot;UserID=aUser;Password=aPassword;DataSourceName=Test&quot;" 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


【解决方案1】:

一切正常,我能想到的唯一原因是我删除了我的 ASP .NET 4.0 临时文件。另外,我必须补充一点,我将我的流程从使用集成测试来测试这一部分更改为使用单元测试。我没有先做单元测试,因为我们的构建服务器上没有数据库。

一旦我能够证明它在那里工作,我决定删除我的临时文件。在那之后,一切都开始正常工作。因此,我的应用程序中出现了某种缓存问题。我使用了上面提到的相同的连接字符串。

实际上,我使用了元数据的域名“metadata=res://MyDomain/MyEntitities.csdl”,而不是*/MyEntities.csdl。我不打算很快更改域。事实上,这正是可能导致某些问题的原因,因为我更改了 EF 所在的 MyEntities.Domain 的位置、名称和命名空间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-07
    相关资源
    最近更新 更多