实体框架ConnectionString解析异常

时间:2012-12-05 01:25:41

标签: entity-framework entity-framework-4 connection-string

我无法找到我的connectionString语法是如何错误的。任何人都可以提出一个解决这个问题的方法吗我在连接字符串中使用EF时遇到了困难。我是EF的新手。

  • 我正在使用Sybase Anywhere 12数据库。
  • 我在一个由Web应用程序补充的单独类库中使用带有EDMX的Table-First ObjectContext。
  • 我在我的类库中使用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=&quot;UserID=aUser;Password=aPassword;DataSourceName=Test&quot;" providerName="iAnywhere.Data.SQLAnywhere"/> </connectionStrings>

当我在我的存储库中初始化我的Entity / ObjectContext时(请参阅下面的语句),它会返回一个错误:“在配置中找不到指定的命名连接,不打算与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();
        }

我可以在那里看到我的连接字符串,因此很难解析connectionString。我尝试了许多不同的语法排列,但没有找到它接受的任何内容,包括:

  • 明确命名实体文件的程序集而不是通配符(例如metadata = res://MyDomain/MyEntities.csdl ...)
  • 使用Sybase友好的ODBC属性,例如UID而不是UserID,PWD代替密码,DBN代替DataSourceName。

感谢。

1 个答案:

答案 0 :(得分:0)

我让一切正常,我能想到的唯一原因是我删除了我的ASP .NET 4.0临时文件。此外,我必须添加我改变我的过程从使用集成测试来测试这个部分到使用单元测试。我没有先进行单元测试,因为我们的构建服务器上没有数据库。

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

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