'Y'中的实体参与'FK_Y_X'关系.找到0个相关的'X'.预计1'X'

Stu*_*ler 12 c# generics entity-framework-6

我和1..*之间有关系,父母在哪里.当我尝试删除记录时,我收到以下异常消息:XYXY

'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;
    }
}
Run Code Online (Sandbox Code Playgroud)

传入的实体AsNoTracking()在相同的上下文中加载.

有任何想法吗?

Guy*_*tal 5

尝试向X添加一个公共属性YId来保持与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; }
}
Run Code Online (Sandbox Code Playgroud)


Jo *_*Smo 5

当您context.Y.Attach(x);确保对象x拥有父实体的“Id”时。你需要两者。

例子:

x.Id = 3;
x.ParentEntity.Id = 10;
Run Code Online (Sandbox Code Playgroud)

那至少解决了我的问题。我忘记了我附加的对象中的父 ID。


dha*_*eme 0

也许您必须在父实体 (X) 上允许 NULL 值,或者如果您不再使用该实体,则删除该实体