传输LINQ数据对象

时间:2009-04-17 11:06:36

标签: c# linq linq-to-sql

我正在开发一个Web服务,我们使用LINQ-to-SQL进行数据库抽象。当客户端使用我们的web服务时,对象被序列化为XML,并且所有对象都是花花公子。

现在我们希望开发使用本机数据类型的自己的客户端,因为没有理由做对象 - > xml->对象。但是,根据我的理解,你无法传输LINQ对象,因为它们直接映射到数据库,因此数据是“实时”的。

我的问题是,是否有办法对您提取的数据进行“快照”,将LINQ对象设置为“离线”,然后进行传输。在将数据传输到我们的客户端后,数据不会发生变化,我们也不需要数据库访问。

2 个答案:

答案 0 :(得分:2)

LINQ-to-SQL类可以与DataContractSerializer(对于WCF)一起使用(您需要在设计器中启用序列化属性)。有了这个,您应该能够与客户端共享数据程序集。只要你不使用数据上下文,对象本身应该表现良好(只是断开连接 - 所以没有延迟加载)。

诀窍是您需要在序列化代码中重用这些类型(来自现有程序集)。如果您使用的是WCF,则可以使用svcutil /r或通过IDE执行此操作。

尽管如此;为这些场景维护单独的DTO类通常更简洁。但我有时会以上述方式做到这一点。

答案 1 :(得分:1)

如果您愿意使用WCF(对于Web服务和客户端),您可以使用[DataContract]和[DataMember]属性修饰Linq2SQL生成的类。

请查看以下链接以获取一些指导: