如何一个表关联到很多家长使用EF代码第一次(How to associate one table t

2019-09-24 06:58发布

我建立,需要几个表能够被不止一个可能的父表引用域模型。 像你这样的东西可能有一个表来存储记录或文件,并将这些笔记和/或文件可以用不同的父实体相关联。 这并不是说相同的“文件”或“注”可以关联多个业主,但10行的“文件”表,其中3可以通过行从“客户”表中可以拥有的,其中3可能按行从“订单”表资,其中4可以通过从“人”表行所有。

所属表都具有子表的虚拟ICollections。

当我跑通过用于初始迁移代码首先迁移我的模型,看着所产生的流利代码,这些表的表定义包括其称为回源表的多个ID的列,以便将有一列“CUSTOMER_ID “,‘为person_id’等(每个可能的‘拥有的实体。’这似乎不是很‘正确。’有没有更好的方式在EF与CodeFirst模型呢?喜欢能够在使用鉴别列子表,提供了一个“暗示”关于拥有实体?

谢谢,-MrB

Answer 1:

如果您创建笔记,可以有注释的所有实体之间的许多一对多的关系,你会为每个拥有的类型和一个非常干净的音符表结合表。 创造了许多一对多的关系最简单的方法是重写DbContext.OnModelCreating方法。

你的DbContext:

  public class MyDatabase : DbContext
  {
    // Protected methods

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
      base.OnModelCreating(modelBuilder);

      modelBuilder.Entity<Customer>().HasMany(x => x.Notes).WithMany();
      modelBuilder.Entity<Order>().HasMany(x => x.Notes).WithMany();
    }

    public MyDatabase() : base("MyDatabase")
    {
    }

    // Properties

    public DbSet<Customer> Customers { get; set; }

    public DbSet<Order> Orders { get; set; }

    public DbSet<Note> Notes { get; set; }
  }

这将产生如下表: 客户订单票据 ,CustomerNotesOrderNotes与每个只有两列最后两位是结表。

注意! 有了这个解决方案还可以用于实体分享笔记,例如客户和订单可以拥有相同的音符。



Answer 2:

不知道配合,但你可以使用EF层次做到这一点。 看到这篇文章:

http://weblogs.asp.net/manavi/archive/2010/12/24/inheritance-mapping-strategies-with-entity-framework-code-first-ctp5-part-1-table-per-hierarchy-tph。 ASPX

基本上,你可以有三种类型的笔记从基本的笔记型所有继承。

有EF的三种层次所以它的三个当事人之间的文章...



文章来源: How to associate one table to many parents using EF Code First