我試圖通過Linq To SQL更新數據庫中具有ViewModel中值的記錄。我有它的工作,但它已經停止(稍後更多)。使用Linq To SQL更新來自MVC3 ViewModel的記錄
我有一個Customers域對象映射到一個表。我不需要所有的字段,所以我使用AutoMapper將其映射到具有Customer字段子集的ViewModel(CustomerEditVM)。我在服務層執行此操作:
public CustomerEditVM GetCustomerEditVMById(int custId)
{
var domainCustomer = _repository.GetCustomerById(custId);
Mapper.CreateMap<Customer, CustomerEditVM>();
CustomerEditVM customer = Mapper.Map<Customer, CustomerEditVM>(domainCustomer);
return customer;
}
我將CustomerEditVM ViewModel發送到我的視圖,並且用戶編輯記錄。在我服務層我映射回給客戶對象,並調用Update方法在我的倉庫:
public void SaveCustomer(CustomerEditVM customer)
{
Mapper.CreateMap<CustomerEditVM, Customer>();
Customer newCust = Mapper.Map<CustomerEditVM, Customer>(customer);
_repository.Update(newCust);
}
這是我的資料庫和更新方法:
namespace AuctionAdmin.Models.Repositories
{
public interface ICustomerRepository
{
Customer GetCustomerById(int custId);
void Update(Customer customer);
}
public class CustomerRepository : ICustomerRepository
{
private AuctionAdminDataContext _dataContext;
public CustomerRepository()
{
_dataContext = new AuctionAdminDataContext();
}
public Customer GetCustomerById(int custId)
{
var customer = _dataContext.Customers.SingleOrDefault(c => c.CustomerID == custId);
return customer;
}
public void Update(Customer customer)
{
_dataContext.Customers.Attach(customer);
_dataContext.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, customer);
_dataContext.SubmitChanges();
}
}
}
用於正常工作的更新,但現在失敗,此錯誤:
Unable to refresh the specified object. The object no longer exists in the database.
我不知道爲什麼工作這麼好之前,現在並不清楚,但我不使用LINQ到正常更新數據庫。我應該怎麼做?
感謝