如何组织自定义SQl队列收集

我正在用SQlite开发Windows Phone应用程序,并且有很多自定义SQL查询。 喜欢

string query = "SELECT distinct(destinations.name) as Destinations 
                FROM destinations, flights 
                WHERE destinations.d_ID = flights.d_ID 
                AND flights.Date = #" + date.ToShortDateString() + "#";

然后运行:

 var result = (Application.Current as App).db.Query(query);

为了使用SQlite,我使用http://dotnetslackers.com/articles/silverlight/Windows-Phone-7-Native-Database-Programming-via-Sqlite-Client-for-Windows-Phone.aspx#s2-introduction- to-sqlite-client-for-windows-phone和他们的DBHelper

我希望所有查询都在一个地方,所以我可以快速更改它们。

想问问如何正确地做到这一点?

  • 创建一个静态类
  • 使用查询集创建Enum或Dictionary
  • 用集合创建一些XML或类似文件 -
  • 感谢您的建议


    我不认为任何方法都是有效的,原因如下:

    创建一个静态类

    这是一个上帝的对象,被认为是反模式,最好远离它。 这只是一个噩梦来维持。

    使用查询集创建Enum或Dictionary

    现在不是有一个上帝的对象,你有一个上帝的集合,并且实际上只是以不同的方式实现相同的反模式。

    此外,你将有字符串键(或枚举键),并且两者之间没有强大的联系(如果字典因某种原因未填充,该怎么办?)。

    用集合创建一些XML或类似文件

    有人可能会争辩说,你正在用字典做同样的事情; 你必须以某种方式键入查询,然后查找它。 这是一个非常脆弱的方法。

    可能的方案

    我建议你首先将你的数据层抽象成逻辑单元。 为相关的数据操作创建一个类。

    例如,如果您有几个与目标相关的查询和操作,请创建一个公开这些操作的接口:

    public interface IDestinationDataOperations
    {
        // Get destinations by date.
        IEnumerable<string> GetDestinationsByDate(DateTime asOf);
    }
    

    然后,创建一个实现此特定于SQL Lite的类。 如果要进行调用,变量是接口类型。

    这样做的好处是:

  • 如果您将实现从SQL Lite更改为其他基础数据存储(Web服务调用,JSON REST调用,无论如何),只需更改填充接口变量的位置(这是依赖注入开始使用的地方),如你所有的电话都反对抽象

  • 界面更容易测试:

  • 你可以测试你想要的任何测试数据的直接实现
  • 对于依赖于接口的项目,您可以以任何喜欢的方式模拟接口,并且没有下面的实际数据库用于测试。
  • 然后,对于其他数据操作,您可以清洗,冲洗并重复。

    对于奖励积分,您可以将界面划分为写入工作单元和读取存储库,具体取决于是否最适合您的需求。

    链接地址: http://www.djcxy.com/p/95989.html

    上一篇: How to organizate custom SQl queres collection

    下一篇: How to open a table using sqlite db in windows phone 7?