1

Edit Model(ビューフォームからポストバック)のフィールドをドメインモデルにマップして、SubmitChanges()を実行し、データベースレコードを(LinqからSQLを介して)更新できるようにするための最良の方法を理解しようとしています。私の例は単純で、その答えはおそらく手動で行うことです。私が尋ねている質問は、それがまだ手動で行うことができるより多くのフィールドを持つモデルのためであり、おそらくそれが答えです-しかし、より簡単な方法はありますか(おそらくAutoMapperを使用して)?

私のドメインモデル:

public class Product
{
    public int ProductId { get; set; }
    public string Name { get; set; }
    public int Color { get; set; }
    public string SerialNumber { get; set; }
}

私の表示/編集モデル:

public class ProductVM
{
    public int ProductId { get; set; }
    public string Name { get; set; }
    public IEnumberable<Color> Colors { get; set; } // To populate a dropdown in the view with color key/values
}

コントローラーのアクション:

[HttpPost]
public ActionResult UpdateProduct(ProductVM product)
{
    var productService = new ProductService();
    productService.Update(product);
}

私のサービスレイヤーのUpdateメソッド:

public void Update(ProductVM productVM)
{
    Product product = dataContext.Products.Single(p=>p.ProductId == productVM.ProductId);
    // What's the best way to map the fields of productVM into product so I can submit the changes?
    dataContext.SubmitChanges();
}

productのフィールドと一致するproductVMのフィールドをマップしたいだけです。編集モデルにはドメインモデルに存在しないフィールドがあり、ドメインモデルには編集モデルに存在しないフィールドがあります。私の最終的な目標は、モデルの編集のフィールドからデータベースのフィールドを更新することです。

ありがとう

4

1 に答える 1

2

Automapperを使用する

public void Update(ProductVM productVM)
{
    Product product = dataContext.Products.Single(p=>p.ProductId == productVM.ProductId);
    AutoMapper.Mapper.DynamicMap<ProductVM, Product >(productVM, product );
    dataContext.SubmitChanges();
}
于 2011-08-05T21:55:05.463 に答える