我有从dbml生成的DataContext类。一旦我从数据库中获取数据,我需要将它们转换为DataContract类,以便可以通过WCF发送对象。
这样做的一种方法是:
using (var dc = new TestDBL2SDataContext(Settings.Default.TestDBConnectionString))
{
var myEmp = from rec in dc.Employees
select new MyDataContracts.Employee
{
FirstName = rec.Name.Substring(0,10)
};
return myEmp.FirstOrDefault();;
}
有没有更好的方法通过我可以在项目中定义的XSD / XSLT文件来执行此操作,只需指向?
答案 0 :(得分:2)
打开dbml文件,选择设计器,在属性窗口中将Serialization Mode设置为Unidirectional,这就是通过WCF发送从datacontext返回的Employee记录所需的全部内容。
我希望你正在寻找的东西。
答案 1 :(得分:1)
我们为此编写了Translator<FromDataModelType, ToDataContractType>
个类,并使用AutoMapper作为快速,轻松的方法来完成属性之间的映射。
这假定您需要将转换应用于DataContext类,就像您通过将Name
的子字符串分配给FirstName
一样。
答案 2 :(得分:0)
在dbml设计器中,将序列化模式设置为单向。完成工作。
如果您需要稍微不同的DTO图层,也许AutoMapper是一个不错的选择。