栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ASP.NET-在全局资源文件中存储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>


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/634837.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号