当前位置: 首页 > 面试题库 >

ASP.NET-在全局资源文件中存储SQL查询?

林鹏鹍
2023-03-14
问题内容

将SQL查询存储在全局资源文件中而不是将其存储在我的代码隐藏中是个好主意吗?我知道存储过程将是一个更好的解决方案,但是在这个项目上我没有那么奢侈。

我不想在我的页面上查询所有内容,并认为使用中央存储库是一个更好的主意。


问题答案:

资源文件通常用于本地化。但是,字符串只是字符串,只是字符串,您是否真的要将资源文件中的任何旧字符串发送到数据库?

我完全同意其他人的观点,即您应该使用linq或类型化的数据集等。就我个人而言,这些年来,我只需要使用几次文本查询,而当我这样做时,通常会如下所示:

您建立了一个小型框架,然后要做的就是维护一个Xml文件。单个特定的xml文件比资源dll易于管理和部署。您还拥有一个众所周知的位置(存储库),用于存储Sql查询和有关它们的一些元数据,而不仅仅是一些命名约定。

永远不要低估字符串文字上的(简单)类的效用。一旦开始使用该类,就可以添加简单的字符串无法(轻松)完成的工作。

记事本编译器,如果不是100%,则深表歉意。这只是一切相互作用的示意图。

public static class SqlResource
{
    private static Dictionary<string,SqlQuery> dictionary;

    public static void Initialize(string file)
    {
        List<SqlQuery> list;

        // deserialize the xml file
        using (StreamReader streamReader = new StreamReader(file))
        {
            XmlSerializer deserializer = new XmlSerializer(typeof(List<SqlQuery>));
            list = (List<SqlQuery>)deserializer.Deserialize(streamReader);
        }
        dictionary = new Dictionary<string,SqlQuery>();
        foreach(var item in list )
        {
            dictionary.Add(item.Name,item);
        }
    }
    public static SqlQuery GetQueryByName(string name)
    {
        SqlQuery query = dictionary[name];

        if( query == null )
            throw new ArgumentException("The query '" + name + "' is not valid.");

        if( query.IsObsolete )
        {
           // TODO - log this.
        }
        return query;

    }
}

public sealed class SqlQuery
{
    [XmlAttributeAttribute("name")]
    public bool Name { get; set; }

    [XmlElement("Sql")]
    public bool Sql { get; set; }

    [XmlAttributeAttribute("obsolete")]
    public bool IsObsolete { get; set; }

    [XmlIgnore]
    public TimeSpan Timeout { get; set;}

    /// <summary>
    /// Serialization only - XmlSerializer can't serialize normally
    /// </summary>
    [XmlAttribute("timeout")]
    public string Timeout_String 
    {
        get { return Timeout.ToString();  }
        set { Timeout = TimeSpan.Parse(value); } 
    }
}

您的xml文件可能看起来像

<?xml version="1.0" encoding="utf-8"?>
<ArrayOfSqlQuery xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <SqlQuery name="EmployeeByEmployeeID" timeout="00:00:30" >
      <Sql>
SELECT * From Employee WHERE EmployeeID = @T0     
      </Sql>
    </SqlQuery>
    <SqlQuery name="EmployeesForManager" timeout="00:05:00" obsolete="true" >
      <Sql>
SELECT * From Employee WHERE ManagerID = @T0      
      </Sql>
    </SqlQuery>
</ArrayOfSqlQuery>


 类似资料:
  • 我试图构建一个简单的路由,从FTP文件夹读取,并将其存储在本地资源文件夹中。我能够连接到FTPendpoint,但之后什么也不会发生。 要启动我的程序,我使用:mvn clean compile camel:run

  • 问题内容: 我想在解决方案中存储冗长的.sql脚本并以编程方式执行它们。我已经想出了如何执行包含我的sql脚本的字符串,但是还没有想出如何从解决方案中存储的文件中读取字符串(例如,在/ Scripts子文件夹下)。 问题答案: 首先,编辑.sql文件的属性,以便将其作为资源嵌入。 然后使用类似于以下代码的代码来检索脚本:

  • 我想很多程序员应该记得 GitHub 上有一个 Awesome:XXX 系列的资源整理。Awesome 系列虽然挺全,但基本只对收录的资源做了极为简要的介绍,如果有更详细的中文介绍,对相应开发者的帮助会更大。这也是我们发起这个开源项目的初衷。

  • 问题内容: 我在Jenkins的许多项目中都有一个通用的Shell脚本,将其放入resources文件夹并按如下所示加载它是否正确: 虽然这有效: 但是一旦我开始使脚本接受参数,就不能正常运行了,因为它不是文件… 第二个问题是将变量输出到临时文件中是否正确,例如 问题答案: 会成功的 只要记住第一个参数是$ 0而不是$ 1 例如: 我的剧本- 在Jenkinsfile中 结果就是世界!

  • 问题内容: 目前,我正在使用一个大量的JavaScript,jQuery,Microsoft客户端JavaScript和其他库的旧网页。底线- 我无法从头开始重写整个页面,因为企业无法证明它的合理性。所以…就是这样。无论如何,我需要使用变量来污染(我确实没有尝试过)全局名称空间。我在考虑三个选项- 只需使用普通的JavaScript声明存储/检索它- 使用jQuery在DOM标签中存储/获取值-