2009-08-27 2 views
0

엔티티 (linq -> sql, 엔티티 프레임 워크 또는 기타를 사용하여 DB에서 가져온)로부터 비즈니스 개체를 구성하는 도구 나 유틸리티 (매퍼 어셈블리)가 있습니까asp.net mvc의 엔터티에서 bussiness 개체 (DTO 개체)를 매핑하기위한 도구?

하나가 없으면 누구든지 제안 할 수 있습니까? 성취 될 수있는 가장 좋은 방법은 엔티티 클래스에서 속성 (지금 당장하고있는 일)을 붙여 넣을 수 있습니다.

감사합니다.

vijay

+0

LINQ 외에 무엇이 필요합니까? –

+0

linq -> sql에서 데이터 객체를 제공합니다. 그것들을 커스터마이징 된 비지네스 객체에 매핑하는 방법.? – vijaysylvester

답변

4

당신은 투영하여 비즈니스 개체에 매핑됩니다. POCO 비즈니스 오브젝트가 엔티티와 다른 모양을 가지고 있더라도이 기능은 작동합니다. 하지만, 덜 복잡한 프로젝트를 위해 내가 Automapper를 사용하는

+0

그것은 위대한 크레이그였습니다. u 도구를 제안 할 수 있습니까? 같은 것을 자동화 할 수 있습니다. 각 엔티티에 대해 수동으로 이렇게 지루하고. – vijaysylvester

+0

LINQpad는 매우 유용하며 LINQ to Entities를 지원합니다. 그것은 자동으로, 그러나 그것을하지 않습니다. VS IntelliSense를 사용하면 일반적으로 충분합니다. 결국 실제 쿼리를 거의 입력하지 않게됩니다. 엔티티의 모든 속성보다는 비즈니스 메서드에 대해 실제로 필요한 * 만 * 선택하면 성능이 크게 향상 될 수 있기 때문에 전적으로 자동으로 수행하고 싶지 않습니다. –

9

Automapper 직접 질문에 대답하지 않습니다 Meldmapping 클래스 인 cmapper,

cMapper.FillBusinessObject(ViewModel, BusinessObject); // To map from ViewModel to BO 

cMapper.FillModel(BusinessObject, ViewModel); // To map from BO to ViewModel 

는 투표 주셔서 감사합니다 :)

+0

Automapper FTW. – mxmissile

+1

AutoMapper는 단일 쿼리에서 관련 엔터티를로드하지 않습니다. LINQ 것입니다. –

0

var q = from dataObject in Context.DataObjects 
     select new BusinessObject 
     { 
      Name = dataObject.Name, 
      RelatedObjectName = dataObject.RelatedObject.Name, // works even if RelatedObject is null 
      DirectChildren = from c in dataObject.Children 
          select new ChildBusinessObject 
          { 
           Name = c.Name 
           // etc. 
          } 
      GrandChildren = from c in dataObject.Children 
          from gc in c.Children 
          select new ChildBusinessObject 
          { 
           Name = c.Name 
           // etc. 
          }, 
      // etc. 
     }; 
+0

당신이 말한 것은 ORM 도구입니다. 데이터 객체를 가져옵니다. 이제는 데이터 객체로 구축 할 비즈니스 객체가 필요합니다. – vijaysylvester