我有一个Web应用程序,它连接到WCF服务的业务逻辑。出于性能和互操作性的原因,我想使用简单的Dto来在WCF边界传输数据。
但是我必须使用类型化数据集进行数据访问(由于政治原因,ORM或任何其他选项不可用)。
将Dto与类型化数据集一起使用是一个好主意。有没有人这样做过?有推荐的模式吗?最重要的是有一个库/工具/方法从类型化数据集中自动生成Dto?
答案 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对象一样可互操作。