2010-11-23 3 views
1

dbml에서 DataContext 클래스를 생성했습니다. 데이터베이스에서 데이터를 얻은 후에는 개체를 WCF를 통해 보낼 수 있도록 DataContract 클래스로 변환해야합니다. 이 작업을 수행하는Linq를 SQLContent 개체에서 DataContract 개체로 변환

한 가지 방법은 다음과 같이이다 : 나는 내 프로젝트에서 정의하고 단순히 가리 할 수있는 XSD/XSLT 파일을 통해이 작업을 수행 할 수있는 더 좋은 방법은

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();; 
     } 

있습니까?

답변

1

우리는 이것에 대해 Translator<FromDataModelType, ToDataContractType> 클래스를 작성했으며을 사용하여 속성 간의 매핑을 신속하고 간편하게 수행 할 수 있습니다.

여기서는 Name의 부분 문자열을 FirstName에 할당하여 작업하는 것처럼 DataContext 클래스에 변환을 적용해야한다고 가정합니다.

+0

예, 하위 문자열을 통해 이름을 이름으로 변환해야합니다 (예 :). AutoMapper가 반드시 도움이 될 것입니다. 그러나 매핑을 정의하고 단순히 호출하는 XML 파일을 사용할 수 있는지 궁금합니다. 그게 가능하니? – DeeStackOverflow

+0

@DeeStackOverflow는 오토마터에 없는데, 그렇지 않습니다. 리드 개발자 : [ "XML은 악마입니다.] (http://automapper.codeplex.com/wikipage?title=Roadmap) :) 해당 스레드의 다른 사용자는 [otis-lib] (http : /otis-lib.googlecode.com/svn/)을 대신 사용해 보았습니다. –

+0

흠 ... 당신은 xml을 사용하는 것이 커뮤니티에 의해 잘 알려지지 않았 음을 나타냅니다. 팁 고마워. – DeeStackOverflow

2

dbml 파일을 열고 디자이너를 선택하고 속성 창에서 직렬화 모드를 단방향으로 설정하십시오. 그러면 WCF를 통해 datacontext에서 반환 된 Employee 레코드를 보내면됩니다.

나는 당신이 찾고있는 것이기를 바랍니다.

+0

Nope. datacontract 클래스는 datacontext 클래스와 다를 수 있습니다. 속성이 변형되거나 평평해질 수 있습니다. 코드가 아닌 XML 파일을 통해이 변환을 수행하고 싶습니다. 직접 작성하거나 제 3을 사용하는 것이 아니라 깨끗하다고 ​​가정합니다. 파티 코드. – DeeStackOverflow

0

dbml 디자이너에서 직렬화 모드를 단방향으로 설정하십시오. 작업 완료.

약간 다른 DTO 레이어가 필요한 경우 AutoMapper가 좋은 옵션 일 수 있습니다.

+0

속성의 일부 변형을 적용해야합니다. 아마 데이터를 평평하게하는 새로운 DataContract 클래스 여야합니다. – DeeStackOverflow

관련 문제