2011-04-22 14 views
1

我應該將DTO直接保存到數據庫嗎?我應該讓ORM直接填充DTO嗎?

public class Product 
{ 
    public virtual int ProductId { get; set; } 
    public virtual string ProductCode { get; set; } 
    public virtual string ProductName { get; set; } 
    public virtual Category Category { get; set; } 
} 

public class ProductMap : ClassMap<Product> 
{ 
    public ProductMap() 
    { 
     Id(x => x.ProductId); 
     Map(x => x.ProductCode); 
     Map(x => x.ProductName); 
     References(x => x.Category).Column("CategoryId");     
    } 

} 

public class ProductDto 
{ 
    public virtual int ProductId { get; set; } 
    public virtual string ProductCode { get; set; } 
    public virtual string ProductName { get; set; } 
    public virtual int CategoryId { get; set; } 
} 

public class ProductDtoMap : ClassMap<ProductDto> 
{ 
    public ProductDtoMap() 
    { 
     Table("Product"); 
     Id(x => x.ProductId); 
     Map(x => x.ProductCode); 
     Map(x => x.ProductName); 
     Map(x => x.CategoryId); 
    } 

} 

下面是如何創建,打開和保存記錄:

public ActionResult Input() 
{ 
    return View(new ProductDto()); 
} 

public ActionResult Edit(int id) 
{ 
    using(var s = SessionFactoryBuilder.GetSessionFactory().OpenSession()) 
    { 
     return View("Input", s.Get<ProductDto>(id)); 
    } 
} 


// Save 
[HttpPost] 
public ActionResult Input(ProductDto p) 
{ 

    if (ModelState.IsValid) 
    { 
     using (var s = SessionFactoryBuilder.GetSessionFactory().OpenSession()) 
     { 
      s.Merge(p); 
      s.Flush(); 
     } 
     return RedirectToAction("Index"); 
    } 
    else 
    { 
     return View(p); 
    } 

} 

我只想說,我想方便,我想直接持續的DTO的數據庫,並檢索其直接返回了。

如果我只是將ProductDto專門用於CRUD,那麼現在需要做什麼?我只是使用產品類僅用於報告:-)

是直接從ORM填充DTO並將它們直接保存回ORM嗎?

回答

2

是的,如果你能做到的話,這是最好的方法。不要對此感到內疚:)

相關問題