此代码有效:
var c = cboCustomer.SelectedItem as Customer;
var t = cboTrailer.SelectedItem as Trailer;
using (var db = new CAPSContainer())
{
db.Attach(c);
db.Attach(t);
c.Trailers.Remove(t);
db.DeleteObject(t);
db.SaveChanges();
}
但我不明白为什么我不能这样做:
db.Attach(t);
db.DeleteObject(t);
db.SaveChanges();
如果我尝试,我会得到:
“CAPSContainer.Trailers”中的实体参与“CustomerTrailer”关系。找到 0 个相关的“客户”。1“客户”是预期的。
我首先使用的是 EF 5.0 模型,这里是 edmx 图表的一部分:
我发现很难理解为什么,请帮忙。
更新 1(如 Boomer 所建议的):
using (var db = new CAPSContainer())
{
db.Attach(c);
//db.Attach(t);
//c.Trailers.Remove(t);
db.DeleteObject(t);
db.SaveChanges();
}
返回:
无法删除该对象,因为它在 ObjectStateManager 中找不到。