实体框架 - 外键映射 - 模型绑定

时间:2014-08-28 07:24:56

标签: c# sql entity-framework

我目前有一个EF上下文。在我的数据库模式中,我有以下方案。

两个表,TableA和TableB

表定义如下:

TableA ( A_ID, name, description)
TableB ( B_ID, C_ID, name, description)

TableA和TableB之间的关系是B_ID和C_ID都是FK&A到A_ID。

如何通过设置我的ModelBinder(Fluent API)或注释来在EF中实现此行为。提前致谢。

1 个答案:

答案 0 :(得分:2)

我有解决方案,但前提是您只需通过在TableB实体中添加TableA虚拟道具来修改您的权限。 例如:

public class TableB
{
...
public virtual TableA B { get; set; }
public virtual TableA C { get; set; }
...
}

然后在上下文中覆盖“OnModelCreating”(您可以使用“HasOptional”代替“HasRequired”):

protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Entity<TableB>()
                .HasRequired(x => x.B)
                .WithMany()
                .HasForeignKey(x => x.B_ID).WillCascadeOnDelete(false);

            modelBuilder.Entity<TableB>()
                .HasRequired(x => x.C)
                .WithMany()
                .HasForeignKey(x => x.C_ID).WillCascadeOnDelete(false);

            base.OnModelCreating(modelBuilder);
        }

还有一件事。我不知道如何使用我的解决方案为您的“B_ID”主键。在我的项目中,我有一个不同的PK“Id”。