entity-framework - 实体框架代码优先:多个一对多
问题描述
我首先使用 EF 代码并希望创建这样的结构,例如:
- 有“发票”模型
- 我们还有其他实体,如客户、客户等,它们可能有发票列表
基本上这种关系是一对多的。一张发票只能属于客户或客户等
我想将所有发票存储在同一个表中,因为所有发票都是相同的模型,并且使用流利的 api 想要创建关系表
下面这样的事情适用于多对多:
modelBuilder.Entity<Client>()
.HasMany(c => c.Invoice).WithMany(i => Clients)
.Map(t => t.MapLeftKey("ClientID")
.MapRightKey("InvoiceID")
.ToTable("ClientInvoices"));
modelBuilder.Entity<Customer>()
.HasMany(c => c.Invoice).WithMany(i => Customer)
.Map(t => t.MapLeftKey("CustomerID")
.MapRightKey("InvoiceID")
.ToTable("CustomerInvoices"));
我怎样才能做到一对多?如何有 2 个表来存储 ClientInvoices 、 CustomerInvoices ?
解决方案
相互声明具有导航属性的两个类。在其主键上使用 ForeignKey 属性标记其中一个表(从属表)。EF 从中推断出一对多:
public class Customer
{
public int Id { get; set; }
...
public List<Invoice> Invoices{ get; set; }
...
}
public class Invoice
{
public int Id { get; set; }
...
[ForeignKey("Customer")]
public int CustomerId { get; set; }
public Customer Customer { get; set; }
}
推荐阅读
- css - 如何(正确)在单个页面上多次重用带有 linearGradient 的 SVG
- algorithm - 部分插入排序
- python - 将值添加到 Python 中的列表字典?
- pentaho - 无法获取用户/角色列表 pentaho
- javascript - 使用谷歌表格上的正则表达式公式基于字符串进行过滤,包括 AND 和 OR 参数
- javascript - 使用 Sublime Text(或其他编辑器)递归搜索单个源文件和导入/包含在所述文件中的所有文件
- php - PHP - 使用 foreach 显示多维关联数组
- python - 如何将整数转换为 np.object?
- ios - 在 UICollectionView 上浮动 UIButton
- php - 如何获取 SELECT EXISTS() 查询值