2010-11-23 4 views
1

У меня есть классы DataContext, созданные из dbml. Как только я получаю данные из базы данных, мне нужно преобразовать их в классы DataContract, чтобы объекты могли быть отправлены через WCF.Преобразование Linq To Sql Объекты DataContext для объектов DataContract

Один из способов сделать это так:

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, что я могу определить в моем проекте и просто указывают на?

ответ

1

Мы написали Translator<FromDataModelType, ToDataContractType> классы для этого и используем AutoMapper как быстрый и безболезненный способ выполнения сопоставления между свойствами.

Предполагается, что вам необходимо применить преобразования к классам DataContext, как вы это делаете, назначив подстроку Name на FirstName.

+0

Да, мне нужно преобразовать Name в Firstname с помощью подстроки (в качестве примера). Я вижу, что AutoMapper, безусловно, поможет. Но было интересно, могу ли я использовать XML-файл, который определяет сопоставления и просто называет его. Это возможно ? – DeeStackOverflow 2010-11-23 19:15:41

2

Откройте файл dbml, выберите конструктор и в окне свойств установите режим последовательной обработки в однонаправленный, это все, что вам нужно, чтобы отправить записи Employee, возвращенные из datacontext через WCF.

Надеюсь, что вы ищите.

+0

Nope. Класс datacontract может отличаться от класса datacontext - свойства могут быть преобразованы, сглажены и т. Д. Я хотел сделать это преобразование через XML-файл, а не в качестве кода. Я предполагаю, что он чище, а не пишет мои собственные или использует некоторые третьи код участника. – DeeStackOverflow 2010-11-23 19:20:00

0

В дизайнере dbml задайте режим сериализации однонаправленным. Работа выполнена.

Если вам нужен немного другой слой DTO, возможно, AutoMapper является хорошим вариантом.

+0

Мне нужно применить некоторые преобразования свойств. Это должен быть новый класс DataContract, который, вероятно, сглаживает данные. – DeeStackOverflow 2010-11-23 19:18:07

Смежные вопросы