我正在尝试使用 LINQ to SQL (DBML) 更新实体/模型。但我做不到。
这是我的代码片段。
public void Update(Customer customer)
{
using (MyDataContext db = new MyDataContext())
{
db.Customers.Attach(customer, true);
db.SubmitChanges();
}
}
public Customer GetByID(int ID)
{
using (MyDataContext db = new MyDataContext())
{
return db.Customers.FirstOrDefault(c => c.CustomerID == ID);
}
}
我的场景是:我获取客户对象并将客户对象绑定到表单。并在更改表单输入数据后。数据完全改变了,但是当我调用更新方法时。它没有更新它,我有这个错误:
如果实体声明了版本成员或没有更新检查策略,则实体只能在没有原始状态的情况下附加为已修改。
我搜索了很多互联网,但找不到任何合适的解决方案。我还像这样修改了我的更新功能:
public void Update(Customer customer)
{
using (MyDataContext db = new MyDataContext())
{
var originalCustomer = db.Customers.FirstOrDefault(c => c.CustomerID == customer.CustomerID);
db.Customers.Attach(customer, originalCustomer);
db.SubmitChanges();
}
}
但仍然得到同样的错误。
我不想从数据库中获取客户并从参数客户属性中更新它的属性。我想使用相同的参数 customer 并在数据库中更新它。
请帮我。谢谢!