【发布时间】:2018-02-12 07:25:11
【问题描述】:
我想将分离对象中的一些记录标记为已删除,然后将其从数据库中删除, 但出现异常“不允许向处于已删除状态的实体添加链接。”如何从 db 中删除此嵌套记录?
public static void UpdateCar(rentcar2.Models.Car i)
{
using (rentcar2.Dal.Entities db = new rentcar2.Dal.Entities())
{
rentcar2.Dal.Car cr = AutoMapper.Mapper.Map<rentcar2.Dal.Car>(i);
int a = 0;
foreach (rentcar2.Dal.CarImage c in cr.CarImages)
{
c.CarId = i.Id;
// fl 0-old_unmodified, 1-adding, 2-deleted, 3-modified
switch (i.CarImages[a].fl)
{//try to mark record
case 0:
db.Entry(c).State = EntityState.Unchanged;
break;
case 1:
db.Entry(c).State = EntityState.Added;
break;
case 2:
**db.Entry(c).State = EntityState.Deleted;**
break;
case 3:
db.Entry(c).State = EntityState.Modified;
break;
}
a++;
}
try
{
**db.Cars.Attach(cr);** // excpetion here
db.Entry(cr).State = EntityState.Modified;
db.SaveChanges();
}
catch (Exception e)
{
throw new System.Exception("", e);
}
}
}
【问题讨论】:
-
我没明白你的意思?您是在寻找 Cascade Delete stackoverflow.com/a/34038321/2946329 还是 DB 端 stackoverflow.com/a/37459049/2946329
-
只需在您的数据库中使用级联并通知实体框架您在配置中的关系上有级联。此外,您的方法很长,几乎什么都不做。删除
try/catch,然后删除switch,使用Dictionary<int, EntityState>。 -
我的意思是我不能附加带有标记为 EntityState.Deleted 的记录的实体,以便从数据库中删除它
标签: c# database entity-framework