2

我正在使用 Entity Framework 将一组 JSON 文件中的数据提取到 MS T-SQL 数据库中。

JSON 文件中有一堆子集合(到目前为止计数 20 个),它们都遵循模式"CollectionName":{"Code":"SomeCode","Description":"Some Description"}

例如:"Country":{"Code":"GB","Description":"Great Britain"}"Language":{"Code":"FR","Description":"French"}

我正在使用的代码使用这种模式:创建了一个名为 CollectionName 的实体,它映射到具有 PK、代码和描述列的表,然后是另一个名为 SourceCollection 的实体(例如:PersonLanguage),它映射到具有源 PK 的桥表& CollectionName PK 为每个。当你有很多这样的小子集合时,那就是很多表。

作为一名 T-SQL 程序员,我过去曾通过创建一个包含 PK、CollectionName 列和 Code & Description 列的“catchall table”解决了类似的问题。所以所有这些小集合都驻留在一个表中,源表中有一个外键指针。

我找不到任何关于如何在实体框架中实现这一点的描述,任何人都可以通过链接或一些示例代码为我指明正确的方向吗?

4

1 回答 1

2

您所描述的模式有时称为“通用查找表”,并且出于引用完整性和约束的原因,通常被认为是反模式。

除了设计决策的优点之外,您有两种选择:

A) 创建一个具有 Id、CollectionName、Code 和 Description 属性的新 EF 实体,并通过某种模式(例如 Repository)将现有的类和数据映射到该实体以进行 CRUD 操作。

B) 将 EF 类型继承与 table-per-hierarchy 映射一起使用,并允许 EF 将多个实体映射到同一个表。抽象父类型将具有 Id、Code 和 Description 属性。EF 将自动创建一个鉴别器列,其用途与 CollectionName 相同。

于 2014-12-15T21:30:09.730 回答