2008-09-25 72 views
2

在使用WCF服务与数据库交互的n层应用程序中,在整个应用程序中使用LinqToSql类的最佳实践方式是什么?LinqToSql和WCF

我已经看到它做了几种不同的方式,但他们似乎像烧了大量的小时创建额外的接口,消息类和类似的东西,从而不必编写数据访问代码。

有没有一种好的方法来做到这一点?我们是否坚持等待实体框架?

回答

2

LINQ to SQL并不适合与分布式应用程序一起使用。更改跟踪和延迟加载是与数据库绑定的DataContext的一部分,因此无法通过线路传输。您可以跨线程移动L2S实体,修改它们,将它们移回并通过将它们重新附加到DataContext来更新数据库,但这非常有限,您将失去所有并发检查,因为旧值始终不会被保留。

顺便说一句,我相信L2E也是如此。

2

将linq-to-sql对象传递给分布式系统的其他部分当然不是一个好主意。如果你这样做,你会把你的客户连接到数据库的结构,这从来就不是一个好主意。这是DataSets的主要问题之一。

最好为数据对象的传输创建自己的类。那些类当然会作为DataContracts实现。在您的服务层中,您将在linq-to-sql对象和数据载体对象的实例之间进行转换。它很乏味,但它将服务的客户从数据库模式中分离出来。它还具有让您更好地控制系统中传递的数据的优势。