'Y'参加'FK_Y_X'的关系.0相关'X'被发现.1 & # 39;
本文关键字:被发现 相关 参加 关系 FK | 更新日期: 2023-09-27 18:12:41
我在X
和Y
之间有一个1..*
关系,其中X
是父级。当我尝试删除记录Y
时,我得到以下异常消息:
'Y'中的实体参与'FK_Y_X'关系。没有发现相关的"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()
。
任何想法?
尝试为X添加一个公共属性YId,它将保持到Y的连接,这解决了我的问题,我使用微风与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; }
}
当您context.Y.Attach(x);
时,确保对象x
持有父实体的"Id"。两者你都需要。
的例子:
x.Id = 3;
x.ParentEntity.Id = 10;
那至少解决了我的问题。我忘记了我附加的对象中的父id
也许你必须允许父实体(X)上的NULL值或删除实体,如果你不打算再使用它
对于我来说,数据库中的记录对于所讨论的FK列具有NULL值。我用一个有效值填充该列,并且可以通过EF Remove方法删除该记录。