【发布时间】:2013-09-27 14:08:30
【问题描述】:
希望你能帮忙
我有 3 个(以及更多)表 [Customer] [Order] 和 [Invoice]。
所有这些表都有一个 ID 列 [ID - Guid]。
我有一张表 [Notes],它由 2 列组成(为简洁起见):-
[ID - Guid]
[ParentFKID - Guid]
[Comment - String]
我希望在 3 个(以及更多未来)“父”实体中的每一个上创建一个 [Notes] 集合,并配置每个实体以填充 [Notes] 表中的集合,其中主键有问题的父表指向[ParentFKID] 列。
所以基本上[ParentFKID] 列是一个外键,但它是多个其他表的外键。这是可能的,因为我们使用的是 GUID 键。
这本质上是因为我们没有复制 [CustomerNotes] [OrderNotes] 和 [InvoiceNotes] 的表,并且还避免使用外键 [Customer_ID] [Order_ID] 和 [Invoice_ID] 使笔记表永远增长的另一种选择
当然,必须有一种方法可以通过 Fluent API 映射来解决这个问题,但由于我对 EF Code First 和 Fluent API 还很陌生,所以我很难看到它。
我不在乎约束可能不可用 - 无论如何这都是可取的,而且对于结构来说似乎是不可能的。这肯定是一种常见的情况。
谁能帮助并提供一个示例,说明如何为模型配置实体以启用此场景?
【问题讨论】:
-
您的解决方案可能很常见,但这并没有减少它的臭味和差劲。我建议您阅读此simple-talk.com/sql/database-administration/… 的第 1 项和第 4 项@ 考虑到您的笔记表的增长速度可能是单个表的 3 倍。降低所有笔记查找的性能。此外,没有强制执行唯一约束..您可能正在使用 GUID,但这并不意味着您的应用程序(或人为错误)不能在多个表中插入相同的 guid。
标签: c# entity-framework ef-code-first