我在一个与MVC3 Web应用程序不同的项目中有一个实体框架项目和一个存储库类。我已经在我的MVC项目中建立了对Entity Framework数据项目的引用,因此我可以实例化存储库的实例并调用其方法。但是我得到了错误:
在配置中找不到指定的命名连接,不打算与EntityClient提供程序一起使用,或者无效。
我以前遇到过此问题,我相信解决方案是在MVC web.config文件中包含实体框架app.config文件中的连接字符串。
这不适合我。感觉应该有另一种方式可以使项目紧密结合在一起。我是在做梦还是有更好的练习可以让我只是打电话给引用的dll并完成它?
由于
答案 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项目的配置文件中放置连接字符串使其“紧密耦合”。配置文件本身是松耦合的源。您始终可以使用配置转换更改连接字符串,这意味着您只需选择不同的解决方案配置即可切换连接字符串。