'Y'参加'FK_Y_X'的关系.0相关'X'被发现.1 & # 39;

本文关键字:被发现 相关 参加 关系 FK | 更新日期: 2023-09-27 18:12:41

我在XY之间有一个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()

任何想法?

'Y'参加'FK_Y_X'的关系.0相关'X'被发现.1 & # 39;

尝试为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方法删除该记录。