我建立,需要几个表能够被不止一个可能的父表引用域模型。 像你这样的东西可能有一个表来存储记录或文件,并将这些笔记和/或文件可以用不同的父实体相关联。 这并不是说相同的“文件”或“注”可以关联多个业主,但10行的“文件”表,其中3可以通过行从“客户”表中可以拥有的,其中3可能按行从“订单”表资,其中4可以通过从“人”表行所有。
所属表都具有子表的虚拟ICollections。
当我跑通过用于初始迁移代码首先迁移我的模型,看着所产生的流利代码,这些表的表定义包括其称为回源表的多个ID的列,以便将有一列“CUSTOMER_ID “,‘为person_id’等(每个可能的‘拥有的实体。’这似乎不是很‘正确。’有没有更好的方式在EF与CodeFirst模型呢?喜欢能够在使用鉴别列子表,提供了一个“暗示”关于拥有实体?
谢谢,-MrB
如果您创建笔记,可以有注释的所有实体之间的许多一对多的关系,你会为每个拥有的类型和一个非常干净的音符表结合表。 创造了许多一对多的关系最简单的方法是重写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; }
}
这将产生如下表: 客户 , 订单 , 票据 ,CustomerNotes和OrderNotes与每个只有两列最后两位是结表。
注意! 有了这个解决方案还可以用于实体分享笔记,例如客户和订单可以拥有相同的音符。
不知道配合,但你可以使用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的三种层次所以它的三个当事人之间的文章...