我有以下数据模型:
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的关卡分配为父级?
答案 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 });
}