编写自己的DAL时要使用的好查询层是什么?我们需要编写自己的查询处理器和查询对象模型吗?

时间:2009-08-26 04:24:21

标签: .net data-access-layer

所以,我在这里,即将推出自己的数据访问层。我在DAL中需要的关键功能是异步编程模型,基于云的数据库(最终一致性,缓存,REST协议等),多值属性,检索部分对象等。我需要为面向对象的访问提供丰富的支持 - 列表,字典,可序列化的类型等。我不是在考虑从现有的数据模型生成OO类。这不是我们设计应用程序的方式,至少在这种情况下。根据我的知识,我确信我需要编写自己的DAL,没有一个能满足我的需求。

我现在遇到了设计一个适用于对象(层次结构,列表,嵌套等)的良好查询语言的问题。有没有好的设计/查询处理器可以重复使用?

我是否重新发明了现有的东西?或者走正确的道路?

1 个答案:

答案 0 :(得分:1)

如果您使用的是.NET,则可以实现自己的LINQ提供程序,以获得可构造(通过构建函数或表达式)并且可读的语言内查询语言。

我现在已经实现了几个自定义LINQ提供程序,一旦你超越了最初的学习曲线,我发现它非常自然。此外,如果您有任何函数式语言背景,那么它可能会非常熟悉。

这是一个开始使用的教程:

http://weblogs.asp.net/mehfuzh/archive/2007/10/04/writing-custom-linq-provider.aspx

或者,您可以编写自定义查询DSL。如果你采取这种方式,我建议考虑使用Boo来实现该语言,或者使用奥斯陆项目中出色的升级MGrammar语言。

示例Boo DSL:

http://nathan.whiteboard-it.com/archive/2008/06/24/settings-dsl.aspx

使用MGrammar的DSL:

http://msdn.microsoft.com/en-us/library/dd857654(VS.85).aspx