SubSonic,ORM,edmx,Linq:可序列化的Db通信?

时间:2011-12-22 08:32:31

标签: linq subsonic edmx

以下场景等待不错的选择:

  • 用.NET编写的中央Windows服务接受客户端在后台查询数据库(并让他们写入Db)。
  • 客户端应该能够使用旧式.NET Remoting来实现兼容性(或者可以非常简单地过渡到WCF)。
  • 当前查询是通过自制对象发送的,这些对象带有标准指令(Insert,Update,SelectCommand)或基于字符串的直接SQL查询,但要使用Linq,所有记录都需要拉到本地客户端
  • 应该与oracle和MSSQL一起使用
  • 当表中的数据发生变化时,事件会从服务器发送到客户端 - 这是必须的!

这些是主要要求。现在我们已经开始评估使用edmx过渡到Linq,但我们担心会失去灵活性,我们必须重写所有的Db处理代码。我们希望看到的基本改进是通过网络的Linqed绑定,因此我们可以使用Linq查询而无需直接连接到.NET 4的EMF层。我开始调查ORM替代方案并且现在遇到了亚音速。

所以开始问问题:) - 是否可以使用SubSonic,使客户端对实体有所了解,但查询转换和Db连接仅托管在中央服务器上?我们希望解除对Db的直接访问,因为Db事件,复制和我们的应用程序所需的其他特定功能。

关心弗洛里安

2 个答案:

答案 0 :(得分:0)

有一个项目InterLINQ,旨在以一种通用的方式解决类似于您所描述的需求(通用,因为能够与服务器端的多个查询提供程序一起工作)。我从来没有使用过这个项目,似乎它在一年多的时间里都没有用过,而且缺乏文档。

我认为SubSonic不会比任何其他linq提供商更容易实现。您可能会尝试以提供程序无关的方式序列化表示查询的表达式。

答案 1 :(得分:0)

你的问题非常广泛 - 我只能回答一小部分。

SubSonic ORM 3.0包含Linq to SQL翻译器。您的Linq查询将转换为SQL,并且只有您实际使用的行才会返回给客户端。效果与编写自定义SQL的效果非常相似,实际上您可以检索生成的SQL。

你的大部分问题似乎超出了范围,因为它更多地是关于分布式查询处理而不是简单的ORM东西。