【问题标题】:MVC3 EF4 POCO Repository/UnitOfWork Connection ErrorMVC3 EF4 POCO 存储库/UnitOfWork 连接错误
【发布时间】:2010-11-01 21:28:51
【问题描述】:

我实现了 Gil Fink 的 T4 存储库/工作单元模板,用于我正在从事的项目,这是我使用 MVC 的第一个完整项目。但是,我遇到了一个以前没有遇到的错误,我无法追踪它。我不知道是模板的问题,还是只是我设置错误的某个设置,但我现在不知所措。我希望有人能够阐明这种情况。

这是我的框架设置:

  • MVC 3 测试版
  • SQL Server 2008 R2
  • Ninject v2.1.0.76
  • EF4 POCO
  • 解决方案中的 3 个项目:数据、实体和 MVC 应用程序。

我正在做一个 DB 优先设计,并通过 Microsoft 的 ADO.NET POCO 实体生成器使用 EF 创建 POCO 类。然后我使用 T4 工具创建存储库和工作单元模式。通过该设置以及生成的所有类和存储库,我使用 Ninject for DI 将其实现到 MVC 应用程序中。我现在使用的是使用控制器工厂的 MVC 2 方法,并计划稍后将其更改为 IDependencyResolver 方法。

当我使用硬编码的 Mock 存储库时,应用程序可以正常工作,但是当我将其更改为使用 IRepository 绑定时,我收到以下错误: “提供的连接无效,因为它包含的映射或元数据信息不足。 参数名称:连接" 这表明 EF 连接到数据库的连接字符串不正确,但它是 ADO.NET 实体数据模型模板生成的默认字符串。也许这也与 .edmx 设置有关。

这是我的连接字符串(使用方便的 Nerd Dinner 数据库布局)

<add name="NerdDinnerEntities"
connectionString="metadata=
res://*/Model1.csdl|
res://*/Model1.ssdl|
res://*/Model1.msl;
provider=System.Data.SqlClient;
provider connection string=&quot;Data Source=Wayne;Initial Catalog=NerdDinner;Integrated Security=True;Pooling=False;MultipleActiveResultSets=True&quot;"
providerName="System.Data.EntityClient" />

任何有任何想法/提示等的人,我都会非常感激。

编辑:这是我正在使用的 T4 模板的链接: Repository and Unit of Work T4 Template for Entity Framework

编辑2: 该错误与我在工作单元中使用 DI 的家庭有关。当我删除 DI 并手动在控制器中添加依赖项时,它可以工作。当我尝试实现 DI 时,它会中断。

【问题讨论】:

    标签: asp.net-mvc .net-4.0 entity-framework-4


    【解决方案1】:
    res://*/Model1.csdl|
    

    那个 * 是一个通配符,表示 EF“扫描所有程序集以查找资源”。无论出于何种原因,此扫描都可能找不到程序集。

    将 * 更改为您的程序集名称:

    res://My.Assembly.Name/Model1.csdl|
    

    【讨论】:

    • 我实际上已经尝试过了。我使用 .NET Reflector 来确保我得到了正确的程序集名称。我什至尝试了“res://*/;”的“一次性”解决方案,但这也没有用。
    • 宾果游戏!这解决了我的问题。谢谢@jfar
    【解决方案2】:

    如果您使用 NuGet 安装您的 Ninject 依赖项,它喜欢在 NinjectWebCommon.cs 中设置您的 DI 绑定。如果加载您的 DI 绑定需要实例化实体框架上下文,这会在应用程序生命周期中过早发生,并且应用程序无法正确解释连接字符串。

    如果您认为这可能是您正在发生的事情,see my answer here for more information

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-05
      • 1970-01-01
      • 1970-01-01
      • 2019-03-29
      • 1970-01-01
      • 1970-01-01
      • 2011-05-09
      • 1970-01-01
      相关资源
      最近更新 更多