实体框架定制外键关系

时间:2015-04-08 22:06:47

标签: entity-framework code-first fluent

我正在使用Entity Framework 6.我创建了我的数据模型Code First,数据库已启动并运行,一切正常。下面是我的数据的伪表示。我将在代码段下面继续解释。

public class ObjectTypeA
{
    public ObjectTypeA()
    {
        Bs = new HashSet<ObjectTypeB>()
        Cs = new HashSet<ObjectTypeC>()
    }

    public ICollection<ObjectTypeB> Bs { get; private set;}
    public ICollection<ObjectTypeC> Cs { get; private set;}
}

public class ObjectTypeB
{
    [ForeignKey("ObjectA")]
    public Guid ObjectTypeAId { get; set; }

    public virtual ObjectTypeA ObjectA { get; set;}
}

public class ObjectTypeC
{
    [ForeignKey("ObjectA")]
    public Guid ObjectTypeAId { get; set; }

    public virtual ObjectTypeA ObjectA { get; set;}
}

因此,正如我所提到的,一切正常,包括级联删除,默认情况下处于启用状态。我希望能做到的是:

如果ObjectTypeBs持有一个键,则允许删除ObjectTypeA,但如果有ObjectTypeC持有键,则不允许删除ObjectTypeA。

如果Cs.Count&gt; 0,无法删除ObjectTypeA。

可以在标记中完成,是否需要在Fluent中完成? 由于级联删除已启用,在关闭它然后在需要时启用它时,不同的方法会更好吗?如果是这样,怎么样?

我看过使用可空的ForeignKeys,但这看起来并不像我正在寻找的功能。

0 个答案:

没有答案