如何组织自定义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或类似文件
有人可能会争辩说,你正在用字典做同样的事情; 你必须以某种方式键入查询,然后查找它。 这是一个非常脆弱的方法。
可能的方案
我建议你首先将你的数据层抽象成逻辑单元。 为相关的数据操作创建一个类。
例如,如果您有几个与目标相关的查询和操作,请创建一个公开这些操作的接口:
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?