仅允许自己引用具有相同所有者的模型

时间:2019-02-21 13:21:31

标签: c# entity-framework entity-framework-6

我有以下数据模型:

 Dim cmd As New OleDbCommand("insert into Table1(Email,Password) Value(@Email,@Password)", connection)
            cmd.Parameters.AddWithValue("@Email", Email.Text)
            cmd.Parameters.AddWithValue("@Password",  Passwordtillogin.Text)

我想存储多组分层数据。 每个集合由包含级别(节点)的气泡所拥有。 一个级别可以将其自身引用(父级)设置为null(树的头部),也可以将另一个级别(父级的子节点)设置为

现在我的问题是,从技术上讲,一个关卡可以具有一个确实属于另一个气泡的父级(自引用)。那应该是不可能的。

我如何确保仅将具有相同BubbleId FK的关卡分配为父级?

1 个答案:

答案 0 :(得分:0)

BubbleId应该是Level主键的一部分,以便其他引用它的级别可以保证具有相同的BubbleId

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<Level>()
        .HasKey(l => new { l.Id, l.BubbleId });
    modelBuilder.Entity<Level>()
        .Property(l => l.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
    modelBuilder.Entity<Level>()
        .HasMany(l => l.Children)
        .WithOptional(l => l.Parent)
        .HasForeignKey(l => new { l.ParentId, l.BubbleId });
}