Asp.net ASP拆分配置文件

Asp.net ASP拆分配置文件,asp.net,Asp.net,对于一个学校项目,我们正试图使我们的ASP.net项目尽可能模块化。我们希望分割Web.config,以便有单独的文件来存储数据库查询。准确地说,每个“模型”对应一个 我试图在互联网上寻找更多关于这个问题的信息,但我真的找不到任何我理解的好答案 那么,我们如何将查询拆分为单独的配置文件并访问它们呢?如果将页面组织到文件夹中,则每个文件夹中都可以有一个web.config文件。该文件夹中的所有页面都将能够使用该web.config文件。首先,我必须备份其他人所说的,你真的不应该在你的web.con

对于一个学校项目,我们正试图使我们的ASP.net项目尽可能模块化。我们希望分割Web.config,以便有单独的文件来存储数据库查询。准确地说,每个“模型”对应一个

我试图在互联网上寻找更多关于这个问题的信息,但我真的找不到任何我理解的好答案


那么,我们如何将查询拆分为单独的配置文件并访问它们呢?

如果将页面组织到文件夹中,则每个文件夹中都可以有一个web.config文件。该文件夹中的所有页面都将能够使用该web.config文件。

首先,我必须备份其他人所说的,你真的不应该在你的web.config中存储查询,如果你不使用ORM,它们应该在应用程序中硬编码

如果您真的想研究在文件和模块化文件中进行查询,您可以研究使用资源文件。现在这些应该用于本地化和被认为是“资源”的东西,但是没有理由不能将查询放入其中

这样,每个模块可以有一个资源文件。这是你想要的模块化的。 因此,根据您的示例,您将有一个名为recipes的资源文件。然后您将有一个SelectOwn键,该值就是您的查询。然后,您可以在代码中通过说Recipies.SelectOwn来访问它,这至少是一个更好的API


我想仔细检查一下你的家庭作业,你有没有理由不能在代码中添加查询?即使是常量字符串?

也不能在运行时像这样合并多个web.config。您可以在生成时使用生成后操作合并一些文件。如果您真的想走这条路,最好使用自己的配置文件而不是web.config,并将它们加载到应用程序中。也就是说,为什么需要单独的文件?你就不能在web.config中将它们分组吗


无论如何,正如其他人所暗示的,这可能是存储SQL查询的错误位置。我会问你的导师。SQL的常见位置是数据访问类或存储过程(我个人不喜欢这些,因为如果数据库中有逻辑,并行测试新版本的软件会变得很困难)。

要清楚;您正在配置文件中存储“查询”?i、 e.选择和更新?为什么?为什么?我们在学校已经学会了这样做。使用params存储准备好的语句。示例:您知道,这不是正确的设计。您应该在SQL中创建存储过程。至少,我会将数据库查询作为字符串保存在编译代码中。@Jens-为了补充p.campbell所说的内容,假设您更改了一个查询中使用的表中的一列(例如数据类型、名称等)。无论您如何分割它,您都必须进入代码并更改其使用方式。您不能简单地更改配置文件中的查询。事实上,我无法想象这样一种情况:您可以在逻辑上只更改配置文件,而不必接触其他代码。因此,我支持将查询存储在配置文件中是一个可怕的想法的动议。这完全取决于您想要使用web.config中的哪些部分。。。并非所有部分都支持通过子文件夹继承,有些部分仅在子应用程序中支持继承,而其他部分根本不支持继承。@Jamiere:简化部署?听起来每个.aspx都有自己的.config。哎呀。这使部署文件的数量增加了一倍。这与适当的数据层提供的任何/所有优势背道而驰。可维护性下降。这是一个日常WTF候选人。配置是指在环境(超时、连接字符串、电子邮件地址、LDAP服务器等)发生变化时,可能会发生变化的值。配置与业务逻辑无关,而SQL正是关于业务逻辑的。@jamietre-RE:change to query。对查询的更改并不需要重新编译代码。假设查询更改为返回多行而不是一行。假设它返回的列更少。使用该查询的代码将中断。事实上,对查询的大多数更改都需要对使用代码进行更改。@jamietre-到目前为止,不这样做的最大原因是,正如p.campbell所说,查询代表业务逻辑。如果在应用程序的已部署版本中更改查询,则该更改永远不会进入源代码管理。为了进一步补充我的想法,我需要更改查询的唯一原因是为了提高性能或更改返回的数据。在这些情况下,我总是需要重新编译,因为我需要确保查询没有破坏任何东西。无论是从流氓unescaped'的编译错误,还是更重要的是运行依赖于复制所有文件的构建的集成测试。@jamietre-我在哪里说过每个查询都映射到一个类?它代表逻辑。要使用,您需要引用列,并期望返回的行数。报告将绑定到列名。更改这些或它们的数据类型或返回的行,可能会破坏代码。