如何在.Netcore 2.0中进行级联删除

时间:2017-09-07 16:56:56

标签: c# entity-framework cascading-deletes

在我的应用程序中,我有这个类结构。

public class Class1
{
    public long Class1ID { get; set; }
    public ICollection<Class2> class2 { get; set; }
}

public class Class2
{
    public long Class2ID { get; set; }
    public ICollection<Link> Link { get; set; }
}

public class Link
{
    public long ID { get; set; }

    public string URL { get; set; }
}

前端:

public async Task<IActionResult> OnPostAsync(long? id)
{
    var r = 1 + 1;
    if (id == null)
    {
        return NotFound();
    }

    var Class1 = await _context.Class1.FindAsync(id);
    await _context.SaveChangesAsync();

    if (Class1 != null)
    {
        _context.Class1.Remove(Class1);
        await _context.SaveChangesAsync();
    }

    return RedirectToPage("./Index");
}

使用本地数据库正确地对数据进行数据绑定。我现在可以编辑和查看Class1。当我尝试删除Class1的实例时,它说我不能,因为它正被使用。

SqlException: The DELETE statement conflicted with the REFERENCE constraint "FK_Class2_Class1_Class1ID". The conflict occurred in database "DBName", table "dbo.Class2", column 'Class1ID'. The statement has been terminated.

为了进行级联删除,我是否必须通过数据库并删除OnPostAsync()方法中的所有相关字段?还是有一个更简单的方法?

0 个答案:

没有答案