代码之家  ›  专栏  ›  技术社区  ›  Christian P.

传输LINQ数据对象

  •  2
  • Christian P.  · 技术社区  · 15 年前

    我正在开发一个WebService,在这里我们使用LinqToSQL进行数据库抽象。当客户机使用我们的WebService时,对象被序列化为XML,所有的都是漂亮的。

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

    我的问题是,是否有一种方法可以对您提取的数据进行“快照”,将Linq对象设置为“脱机”,然后进行传输。数据在传输到我们的客户机之后不会改变,我们不需要数据库访问。

    2 回复  |  直到 15 年前
        1
  •  1
  •   rguerreiro    15 年前
        2
  •  2
  •   Marc Gravell    15 年前

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

    技巧是需要在序列化代码中重新使用这些类型(从现有程序集)。如果您使用的是WCF,则可以使用 svcutil /r 或者通过IDE。

    尽管如此,为这些场景维护单独的DTO类通常会更干净。但我有时也会这么做。