2009-08-27 5 views
0

エンティティ(linq - > sql、エンティティフレームワークなどを使用してDBから取得したエンティティ)からビジネスオブジェクトを構築するためのツールまたはユーティリティ(マッパーアセンブリ)はありますか?asp.net mvcのエンティティからbussinessオブジェクト(DTOオブジェクト)をマッピングするためのツール?

むしろ達成できる最善の方法は、エンティティクラスからプロパティ(私が今やっていること)を貼り付けることをコピーできます。

ありがとうございました。

vijay

+0

LINQ以外に何が必要ですか? –

+0

linq - > sqlは私にデータオブジェクトを与えます。それらをカスタマイズされたビジネスオブジェクトにマップする方法。 – vijaysylvester

答えて

4

あなたは投影することにより、ビジネス・オブジェクトにマップされます。これは、POCOビジネスオブジェクトのエンティティと形状が異なる場合でも機能します。

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

それは素晴らしいクレイグだった。あなたはどんなツールを提案することができますか?同じことを自動化する。本当に退屈な手動で各エンティティのためにこれを行う。 – vijaysylvester

+0

私はLINQpadを信じられないほど価値があり、LINQ to Entitiesをサポートしています。しかし、それは自動的には行いません。 VS IntelliSenseは一般的には私にとっては十分ですが、実際のクエリはほとんど入力しません。エンティティのすべてのプロパティではなく、ビジネスメソッドに対して実際に必要な*関連するオブジェクトのみを選択すると、パフォーマンスが大幅に向上するため、完全に自動的には実行したくありません。 –

9

​​

+0

Automapper FTWこれです。 – mxmissile

+1

AutoMapperは、1つのクエリで関連するエンティティをロードしません。 LINQが行います。 –

0

これは直接あなたの質問に答えるされていない - しかし、私はこの製品http://www.devexpress.com/Products/NET/ORM/を使用するより複雑なプロジェクト(.NETオブジェクト・リレーショナルマッパーツールをDevExpress社から)Automapperを使用しての

+0

ORMツールとは何ですか?データオブジェクトを取得します。私は今データオブジェクトから構築されるビジネスオブジェクトが必要です。 – vijaysylvester

0

例、についてMeldmappingクラスであることcmapper、

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

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

は投票していただきありがとうございました:)

関連する問題