我有一个连接到 WCF 服务以实现其业务逻辑的 Web 应用程序。出于性能和互操作性的原因,我想使用简单的 Dto 在 WCF 边界传输数据。
但是,我必须使用类型化的数据集进行数据访问(由于政治原因,ORM 或任何其他选项不可用)。
将 Dto 与类型化数据集一起使用是个好主意吗?有人做过吗?有推荐的模式吗?最重要的是,是否有一个库/工具/方法可以从类型化的数据集中自动生成 Dto?
我想到了实体翻译模式。
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;
}
}
服务层类
public PersonDataContract GetSpecificPerson([Parameters])
{
[other setup/validation code...]
return PersonTranslator.TranslateToContract(PersonDataAccess.GetPersonRow([Parameters]));
}
I would suggest to use typed DataRow-s, DataTable-s. There's really not much difference between a typed DataRow and a Dto object. Performance wise you have to test it that plain Dto-s will help (I doubt it). As for interoperability, typed DataRow-s are plain classes, so they are as interoperable as Dto objects.