1

automapper を使用して ViewModel をビジネス オブジェクトにマッピングしていますが、既存のオブジェクト インスタンスにマッピングし、ビュー モデルのプロパティのみをマッピングしたいと考えています。例えば

ProductModel には ID、名前、コードがあります ProductBusiness には ID、名前、コード、追加日があります

Function Add(ByVal model As ProducModel) As ActionResult
    dim _ProductBusiness = (Load ProductBusiness from db)

    dim newProductBusiness = AutoMapper.Mapper.Map(Of Business.User)(model)
End Function

どうにかして既存のビジネス オブジェクト インスタンスを渡し、両方のオブジェクトにある 3 つのプロパティのみをマップしたいのですが、dateadded はデータベース内と同じままにする必要があります。

ありがとう

4

2 に答える 2

0

マッピングを作成するときは、プロパティを無視できます。

より洗練されたものを探しているかどうかはわかりません。

C#で

Mapper.CreateMap<ProductModel, ProductBusiness>()
.ForMember(target => target.dateadded, opt => opt.Ignore());

より一般的なものを望まない場合は可能ですが、詳細を歓迎します。

于 2012-04-07T20:18:30.363 に答える
0

あなたはこれを行うことができます:

    Public Sub MapIt(input As ProductModel, output As ProductBusiness)
        AutoMapper.Mapper.CreateMap(Of ProductModel, ProductBusiness)()
        AutoMapper.Mapper.Map(input, output)
    End Sub

ただし、毎回電話する必要はありませんCreateMapAutoMapper は無視しdateaddedます。(テストしていませんが、そうすると思います)。

または、これを行うこともできます:

    Public Sub MapIt(input As c1, output As c2)
        AutoMapper.Mapper.DynamicMap(input, output)
    End Sub

2 番目のコードは最初のコードと同じです。DynamicMapあなたを呼びCreateMapます。

于 2012-04-09T13:23:28.173 に答える