【发布时间】:2016-04-06 13:36:44
【问题描述】:
显然,使用实体框架进行级联删除非常令人困惑。我发现了很多问题,但我还没有找到解决我的问题的方法。如果我手动设置“删除规则”来级联它一切正常。但是通过 Fluent API,我还没有找到在数据库中设置此属性的方法。
就我而言,我有一个基类(在数据库中有自己的表)
public abstract class PropertyBase
{
public int PropertyID { get; set; }
public string Name { get; set; }
public virtual AspectBase AspectBase { get; set; }
}
我有派生类,它们按类型存储表。
public class TextProperty : PropertyBase
{
public string Value { get; set; }
}
public class IntProperty : PropertyBase
{
public int Value { get; set; }
}
在我的数据库上下文中,我有以下内容:
modelBuilder.Entity<PropertyBase>()
.ToTable("Properties")
.HasKey(p => p.PropertyID);
modelBuilder.Entity<IntProperty>()
.ToTable("IntProperties");
modelBuilder.Entity<TextProperty>()
.ToTable("TextProperties");
我需要在上图中设置所选外键的删除规则。如果我在数据库中手动执行此操作,则一切正常。我真的不知道如何实现这一目标。请帮忙。
我知道它必须与 WillCascadeOnDelete 相关,但为了能够使用 Fluent API 执行此操作,我可能需要一些导航属性?
这不是一个重复的问题:因为在我的例子中,它是抽象基类的派生类。有些人提到现有数据库不可能,但幸运的是我没有现有数据库。我正在尝试使用 Fluent API 来完成此代码。非常欢迎任何帮助!
【问题讨论】:
-
您使用的是哪个版本的实体框架?
标签: c# entity-framework cascading-deletes