【问题标题】:Entity Framework - Foreign Key Mapping - Model Binding [duplicate]实体框架 - 外键映射 - 模型绑定 [重复]
【发布时间】:2014-10-21 23:25:27
【问题描述】:

我目前有一个 EF 上下文。在我的数据库架构中,我有以下场景。

两个表,表A和表B

表格定义如下:

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

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

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

【问题讨论】:

  • 我没有为我的 PK 使用 Int,而是使用 GUID。您认为这仍然是一个问题吗?
  • GUID 也应该可以工作 :)

标签: c# sql entity-framework


【解决方案1】:

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

【讨论】:

  • 谢谢。这种方法对我来说效果很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多