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

本文关键字:模型 绑定 映射 框架 实体 | 更新日期: 2023-09-27 18:19:51

我当前有一个EF上下文。在我的数据库模式中,我有以下场景。

两个表,表A和表B

表格定义如下:

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

表A和表B之间的关系使得B_ID和C_ID都是A_ID的FK。

如何通过设置ModelBinder(Fluent API)或通过注释在EF中实现这种行为。提前谢谢。

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

我有解决方案,但前提是您通过在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"。