我在X和Y之间有一个Y关系,其中X是父关系。当我尝试删除记录Y时,我会收到以下异常消息:
“Y”中的实体参与“FK_Y_X”关系。0个相关的'X‘。1 'X‘预计。
我目前正试图以一种通用的、断开连接的方式删除该记录,其方式如下:
public bool Delete(TEntity entity)
{
if (entity == null)
{
return false;
}
try
{
var entry = _context.Entry(entity);
entry.State = EntityState.Deleted;
_context.SaveChanges();
return true;
}
catch
{
return false;
}
}传入的实体在相同的上下文中使用AsNoTracking()加载。
有什么想法吗?
发布于 2014-12-21 17:13:53
尝试添加一个公共属性YId到X,这将保持连接到Y,这解决了我的问题,我使用Breeze与EF6,我有同样的错误。
Class Y
{
public int Id { get; set; }
public ICollection<X> Xs { get; set; }
}
Class X
{
public int Id { get; set; }
public int YId { get; set; }
public Y Y { get; set; }
}发布于 2016-05-22 16:23:43
当您context.Y.Attach(x);时,确保对象x保存父实体的"Id“。你两者都需要。
示例:
x.Id = 3;
x.ParentEntity.Id = 10;至少解决了我的问题。我把父母的身份证忘在我所附的物件上了。
发布于 2014-07-14 09:47:58
如果不再使用该实体,则可能必须允许父实体(X)上的空值或删除该实体。
https://stackoverflow.com/questions/24733689
复制相似问题