Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 传输LINQ数据对象_C#_Linq_Linq To Sql - Fatal编程技术网

C# 传输LINQ数据对象

C# 传输LINQ数据对象,c#,linq,linq-to-sql,C#,Linq,Linq To Sql,我正在开发一个Web服务,其中我们使用LINQtoSQL进行数据库抽象。当客户端使用我们的Web服务时,对象被序列化为XML,一切都很好 现在,我们希望开发自己的客户机,使用本机数据类型,因为没有理由执行对象->xml->对象。但是,据我所知,您不能传输LINQ对象,因为它们直接映射到数据库,因此数据是“活动的” 我的问题是,是否有办法对提取的数据进行“快照”,将LINQ对象设置为“脱机”,然后传输它。数据传输到我们的客户机后不会更改,我们不需要数据库访问。如果您愿意使用WCF(用于webser

我正在开发一个Web服务,其中我们使用LINQtoSQL进行数据库抽象。当客户端使用我们的Web服务时,对象被序列化为XML,一切都很好

现在,我们希望开发自己的客户机,使用本机数据类型,因为没有理由执行对象->xml->对象。但是,据我所知,您不能传输LINQ对象,因为它们直接映射到数据库,因此数据是“活动的”


我的问题是,是否有办法对提取的数据进行“快照”,将LINQ对象设置为“脱机”,然后传输它。数据传输到我们的客户机后不会更改,我们不需要数据库访问。

如果您愿意使用WCF(用于webservice和客户机),您可以使用[DataContract]和[DataMember]属性装饰Linq2SQL生成的类

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


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

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

尽管如此;为这些场景维护单独的DTO类通常会更干净。但我对偶尔以上述方式行事感到内疚