我已经阅读了实体框架一对一映射问题,这不是重复的,因为这里的业务规则规范不同。
有两个表,发票和订单。
Invoices
-> InvoiceID (Primary, Auto Number)
Orders
-> OrderID (Primary, Auto Number)
-> InvoiceID (FK InvoiceID of Invoices Table)
现在的问题是,如果属性名称不同,EF 需要此关联的一对多关系。如果属性名称相同,则它服务于派生类的目的,但这里的订单不是派生类或发票。
为每个购物车生成 InvoiceID(s),但 OrderID(s) 仅针对已支付的发票生成,因此每个 Order 都有 InvoiceID,但每个 Order 没有对应的 Invoice。
如果我为此创建一个单独的表,那么我必须编写太多代码才能做到这一点。有什么办法可以消除这个限制,让 EF 仍然处理我的模型。
但是,目前如果我如下更改模型,它可以工作
Invoices
-> InvoiceID (Primary, Auto Number)
Orders
-> OrderID (Auto Number)
-> InvoiceID (Primary, FK InvoiceID of Invoices Table)
但这是好的做法吗?因为根据定义,Orders 表的 InvoiceID 肯定是唯一的,但我们将在任何地方引用 OrderID 以进行比较和许多其他引用。我知道我可以索引该属性,但我不觉得这个设计是完美的。