将Linq转换为Sql DataContext对象转换为DataContract对象

时间:2010-11-23 18:56:11

标签: c# linq-to-sql datacontext datacontract

我有从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文件来执行此操作,只需指向?

3 个答案:

答案 0 :(得分:2)

打开dbml文件,选择设计器,在属性窗口中将Serialization Mode设置为Unidirectional,这就是通过WCF发送从datacontext返回的Employee记录所需的全部内容。

我希望你正在寻找的东西。

答案 1 :(得分:1)

我们为此编写了Translator<FromDataModelType, ToDataContractType>个类,并使用AutoMapper作为快速,轻松的方法来完成属性之间的映射。

这假定您需要将转换应用于DataContext类,就像您通过将Name的子字符串分配给FirstName一样。

答案 2 :(得分:0)

在dbml设计器中,将序列化模式设置为单向。完成工作。

如果您需要稍微不同的DTO图层,也许AutoMapper是一个不错的选择。