键入的数据集以及Dtos

时间:2009-04-20 09:04:04

标签: wcf dataset dto

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

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

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

2 个答案:

答案 0 :(得分:2)

实体翻译模式浮现在脑海中。 http://msdn.microsoft.com/en-us/library/cc304747.aspx
好吧,也许是它的一个变种。

我最近必须做类似的事情,我刚创建了另一个“图层”,它将存储在datarow / datatable等中的数据转换为数据合约对象。服务层可以使用数据访问方法的结果作为参数调用此新层方法。

这是一个快速而又脏的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]));
 }

答案 1 :(得分:0)

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