【问题标题】:Typed Dataset along with Dtos类型化数据集和 Dtos
【发布时间】:2009-04-20 09:04:04
【问题描述】:

我有一个连接到 WCF 服务以实现其业务逻辑的 Web 应用程序。出于性能和互操作性的原因,我想使用简单的 Dto 在 WCF 边界传输数据。

但是我必须使用类型化的数据集进行数据访问(ORM 或任何其他选项由于政治原因不可用)。

将 Dto 与类型化数据集一起使用是个好主意吗?有人做过吗?有推荐的模式吗?最重要的是,是否有一个库/工具/方法可以从类型化的数据集中自动生成 Dto?

【问题讨论】:

    标签: wcf dataset dto


    【解决方案1】:

    想到实体翻译模式。 http://msdn.microsoft.com/en-us/library/cc304747.aspx
    好吧,也许是它的变体。

    我最近不得不做一些类似的事情,我刚刚创建了另一个“层”,它将存储在数据行/数据表等中的数据转换为数据合同对象。服务层可以使用您的数据访问方法的结果作为参数调用这个新的层方法。

    这是一个快速而肮脏的 PSUEDOCODE 示例:

     public class personTranslator
     {
    
         public static PersonDataContract TranslateToContract(Datarow personDataRow)
        {
            PersonDataContract resultPerson = new Person;
            resultPerson.FirstName = personDataRow["FirstName"];
            resultPerson.LastName = personDataRow["LastName"];
            .
            .
            [etc.]
    
            return resultPerson;
        }
     }
    

    SERVICELAYER 类

     public PersonDataContract GetSpecificPerson([Parameters])
     {
         [other setup/validation code...]
        return   PersonTranslator.TranslateToContract(PersonDataAccess.GetPersonRow([Parameters]));
     }
    

    【讨论】:

      【解决方案2】:

      我建议使用类型化的 DataRow-s、DataTable-s。类型化的 DataRow 和 Dto 对象之间实际上并没有太大区别。 性能方面,您必须对其进行测试,即普通的 Dto-s 会有所帮助(我对此表示怀疑)。 至于互操作性,类型化的 DataRow-s 是普通类,因此它们与 Dto 对象一样具有互操作性。

      【讨论】:

      • 使用 DataRows 作为 Dto 的问题是它们没有用 DataContracts 标记。它们甚至不可序列化。我们已经测试了 Dtos 和序列化数据集之间的差异,并且存在显着的性能影响。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-15
      • 2017-11-24
      • 2010-09-24
      • 2012-07-06
      • 2011-05-28
      • 1970-01-01
      相关资源
      最近更新 更多