MVC3 EF4 POCO存储库/ UnitOfWork连接错误

时间:2010-11-01 21:28:52

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

我实施了Gil Fink的T4存储库/工作单元模板,用于我正在开发的项目,这是我使用MVC的第一个全面项目。然而,我收到的错误是我以前没有得到的,我无法追踪它。我不知道这是模板的东西,还是我设置错误的设置,但我现在正处于失败状态。我希望有人能够对这种情况有所了解。

这是我的框架设置:

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

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

当我使用硬编码的Mock存储库时,应用程序可以正常工作,但是当我将其更改为使用IRepository绑定时,我收到以下错误: “提供的连接无效,因为它包含的映射或元数据信息不足。 参数名称:连接“ 这向我表明EF连接到DB的连接字符串不正确,但它是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

EDIT2: 错误与家庭有关我正在使用工作单位的DI。当我删除DI,并在控制器中手动拥有依赖项时,它的工作原理。当我尝试实施DI时,它会中断。

2 个答案:

答案 0 :(得分:3)

res://*/Model1.csdl|

*是一个通配符,表示EF“扫描资源的所有程序集”。这种扫描无论出于何种原因都无法找到装配体。

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

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

答案 1 :(得分:1)

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

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

相关问题