实体框架在与MVC3 Web应用程序项目分开的项目中不起作用

时间:2012-03-20 12:12:17

标签: asp.net-mvc asp.net-mvc-3 entity-framework entity-framework-4 entity-framework-4.1

我在一个与MVC3 Web应用程序不同的项目中有一个实体框架项目和一个存储库类。我已经在我的MVC项目中建立了对Entity Framework数据项目的引用,因此我可以实例化存储库的实例并调用其方法。但是我得到了错误:

在配置中找不到指定的命名连接,不打算与EntityClient提供程序一起使用,或者无效。

我以前遇到过此问题,我相信解决方案是在MVC web.config文件中包含实体框架app.config文件中的连接字符串。

这不适合我。感觉应该有另一种方式可以使项目紧密结合在一起。我是在做梦还是有更好的练习可以让我只是打电话给引用的dll并完成它?

由于

3 个答案:

答案 0 :(得分:8)

Entity Framework项目的DLL中包含的app.config文件包含一个连接字符串,EDMX设计人员在运行“从数据库更新模型”命令时使用该字符串来查找目标数据库。

部署应用程序时,唯一已知的配置文件是web.config。 EF dll中的app.config文件未在生产中使用。

因此,在web.config中包含运行MVC应用程序时使用的连接字符串。使用transformations时,您还可以为不同的部署方案指定不同的连接字符串(例如,测试和生产)。

所以它不像你介绍某种耦合。您只是使用.NET为您提供的配置方法。

答案 1 :(得分:1)

有很多方法可以对存储库中的连接字符串进行硬编码,并在创建上下文时使用它,但您肯定不想使用它们。处理它的正确方法是通过配置文件。您真的不希望它使用DLL中的配置文件,因为这样可以减少对正在使用的连接字符串的控制。这将使集成测试,登台和生产具有不同的连接字符串变得更加困难,而不是更容易。虽然可以将方法(可以通过配置设置覆盖的固定连接字符串)组合在一起,但是使用我的偏好是为了完全配置驱动的方法。我喜欢单一的约定和更新Web的一次性步骤。使用正确的配置设置的Config(和任何转换)似乎总是花费很少的成本来支付使用配置的简单约定。

答案 2 :(得分:0)

我不明白如何在MVC项目的配置文件中放置连接字符串使其“紧密耦合”。配置文件本身是松耦合的源。您始终可以使用配置转换更改连接字符串,这意味着您只需选择不同的解决方案配置即可切换连接字符串。