【问题标题】:Whats the proper way of accessing a database through an assembly?通过程序集访问数据库的正确方法是什么?
【发布时间】:2011-02-04 22:08:32
【问题描述】:

我有一个 ASP.NET MVC 应用程序,它被构建为一个查询数据库的程序集和一个引用该程序集的 asp.net 前端,该程序集抽象了底层数据库。这意味着我的程序集包含一个 app.config 文件,其中包含数据库的连接字符串(Linq to SQL 数据模型)。我该如何让这更灵活?我是否应该在我的程序集中的某个地方创建一个“initialize()”方法,该方法从 asp.net MVC 应用程序中获取连接字符串,然后控制要使用的数据库?或者这是怎么做的?

【问题讨论】:

    标签: asp.net asp.net-mvc data-access-layer


    【解决方案1】:

    您可以在项目属性中为该程序集创建设置。但是,你真的不应该像那样静态配置东西。应该可以从程序集中创建两个对象系统,每个系统都指向不同的数据库,而不会影响另一个。

    【讨论】:

    • 静态配置的唯一原因是 linq to sql 的作用。现在我从开发环境转移到生产环境,并希望以一种更合适和可持续的方式来做到这一点。请注意,我想多次部署它(卖给不同的客户),所以它应该相对容易重新配置。
    • 如果这确实是 LINQ to SQL 的工作方式,那么它就是反对使用它的论据。但是,由于您已经是,此链接 (goneale.com/2009/03/26/…) 意味着它已经是可配置的。
    • 据我所知,它是同样的垃圾......它仍然存储在 app.config 中,并且被编译到程序集中 - 对吧?因此我需要在每次部署到新客户之前重新编译?似乎效率不高!
    • 创建上下文时,调用接受连接字符串的构造函数。 no-arg 构造函数从 app/web.config 中提取连接字符串,并且不会编译到程序集中,但您可以更改它而无需重新编译。
    • 对于一个普通的应用程序,您必须使用 exe 文件的 app.config,而不是 .dll 文件。对于 Web 应用程序,您使用 web.config ,您的 Web 应用程序链接到的任何程序集都将使用 web.config。程序集中唯一硬编码的是特定连接字符串的名称和默认连接字符串(如果在 web.config 中找不到)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-16
    相关资源
    最近更新 更多