- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在尝试规范化数据库架构并将其映射到 Entity Framework 中时,我发现最终可能会有一堆查找表。它们最终将只包含键值对。我想将它们合并到一个表中,该表基本上有两列“Key”和“Value”。例如,我希望能够让 Addresses.AddressType 和 Person.Gender 都指向同一个表,但要确保导航属性仅返回适用于相应实体的行。
编辑:糟糕。我刚刚意识到我遗漏了这一段:
这似乎是 TPH 类型的问题,但我所做的所有阅读都表明您从父实体中的字段开始并将字段迁移到继承的子实体。我没有任何字段可以移动到这里,因为通常只有两个。
需要表示很多领域特定的键值对。其中一些会不时更改,而另一些则不会。我不想挑挑拣拣,只想让一切都可编辑。由于将要使用的这些类型的属性的数量,我宁愿不必维护需要重新编译的列表枚举,或者最终得到大量查找表。所以,我认为这可能是一个解决方案。
有没有办法在 EF4 中表示这种结构?或者,我是不是找错了树?
编辑:我想另一种选择是在数据库级别构建我想要的表结构,然后在其之上编写 View 并将它们显示为 EF 实体。这只是意味着任何维护都需要在多个级别进行。这听起来比纯 EF 解决方案更令人满意还是更不令人满意?
最佳答案
每个层次结构的表要求您有一个父实体,用作子实体的基类。所有实体都映射到同一个表,并且有特殊的鉴别器列来区分存储在数据库记录中的不同类型的实体。即使您的子实体没有定义任何新属性,您通常也可以使用它。您还必须为表定义主键,否则它将在 EF 中作为只读实体处理。所以你的表看起来像:
CREATE TABLE KeyValuePairs
(
Id INT NOT NULL IDENTITY(1,1),
Key VARCHAR(50) NOT NULL,
Value NVARCHAR(255) NOT NULL,
Discriminator VARCHAR(10) NOT NULL,
Timestamp Timestamp NOT NULL
)
您将使用属性 Id、Key、Value 和 Timestamp(设置为固定并发模式)定义顶级 KeyValuePair 实体。鉴别器列将用于继承映射。
请注意 EF 映射是静态的。如果您定义了 AddressType 和 Gender 实体,您将能够使用它们,但您将无法动态定义像 PhoneType 这样的新类型。这将始终需要修改您的 EF 模型、重新编译和重新部署您的应用程序。
从 OOP 的角度来看,最好不要将其建模为对象层次结构,而是使用多个不相关实体的条件映射到同一个表。不幸的是,即使 EF 也支持条件映射,但我还从未能够将两个实体映射到同一个表。
关于entity-framework - EF Table-per-hierarchy 映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4927350/
我们正在创建一个 REST API,我们目前有两种定义资源的方法。 基本上我们有 Patients , Studies和 Images哪里Patient有 n Studies和一个 Study有 n
我想知道哪一种更好的方法来实现一个被设计为具有复杂 subview 层次结构的 View ,比如说一个 View ,左侧有一个 subview ,右侧有一个 subview ,左侧 subview 有
启动布局检查器时收到错误消息:“获取 View 层次结构时出错:意外错误:空 View 层次结构”。 同样在 Logcat 中有一个异常(exception): 12-10 23:46:56.812
我一直在寻找要在我工作的公司的Web开发部门中实施的Web开发人员指定层次结构。 例如:关联Web开发人员-> Web开发人员->高级Web开发人员->接下来做什么? 请建议..! 最佳答案 “Web
我明白那个: 更快 访问时间> 更多 昂贵的 较慢 访问时间> 减 昂贵的 我也明白寄存器是层次结构的顶部,并且具有最快的访问时间。我很难研究的是为什么它这么贵?据我所知,寄存器实际上是直接内置在 A
我希望有人经历过相同的过程并可以帮助我看看以下情况是否可能。 我目前构建了一个从 S3 存储桶进行复制的管道。该存储桶包含大量文件夹。 Azure 数据工厂是否有办法在从 S3 存储桶复制数据时忽略文
在我看来,定义 static namedQueries = {} 在层次结构的子类中完全屏蔽了父类(super class)的 namedQueries 声明。有没有办法让两者都工作?说使用 supe
我希望有人经历过相同的过程并可以帮助我看看以下情况是否可能。 我目前构建了一个从 S3 存储桶进行复制的管道。该存储桶包含大量文件夹。 Azure 数据工厂是否有办法在从 S3 存储桶复制数据时忽略文
我遇到了以下嵌套数组,并且对它为什么使用这种特定语法有点困惑: var allQuestions = [{ question: "Which company first implemented
在过去的一个月里,我一直在构建一个 Drupal 8 站点,它应该有一个类似于这样的愚蠢的简单页面层次结构: Parent Page --Child Page --Child Page ----Gra
我正在寻求理解 Delphi 7 中其他人的代码(我怀疑较新的版本内置了此代码,但我不想为最新版本花费 > 1000 美元)。 他们有(最好是FOSS)工具可以帮助我生成类层次结构图吗? 其实就是G
我目前有这两个实体:名义上的和熟悉的(家庭/亲属/亲戚)。 熟悉的 [0..*][1] 标题 这两个类具有一个人的共同属性(名字,姓氏,出生日期......),并且它们是两种附属 我想将它们统一在一个
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 10 年前。 Improve thi
是否可以通过层次结构 id 对层次结构中的 sql 数据进行排序,然后对于每个级别排序它按字母顺序说? 假设我们有一个员工表,它根据员工 ID 列出组织层次结构 你有鲍勃 (5),菲尔 (17) 和查
public class OrderEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Colu
我想知道如何编写 postgres 子查询,以便下表示例输出我需要的内容。 id parent_id postdate 1 -1 2015-03-10 2 1
我正在建立一个分类网站。你能建议我怎么做吗基于国家/地区的分区地理位置表 ??? 更新:我可以根据纬度和经度做吗? 下面是我的表结构。 CREATE TABLE IF NOT EXISTS `geo`
我正在使用 Android SDK 附带的 Hierarchy Viewer 工具进行一些测试。 我正在测试的 Activity 具有以下 xml: Sl
我已经对此进行了研究,并且知道我不是第一个提出问题的人,但我似乎无法理解它。我创建了一个简单的示例,如果有人可以提供缺失的链接,我认为它可以帮助我破解它! 我有一个区域表,其中包含层次结构中的大陆和国
我在第一个真正的 iPhone 应用程序上遇到了一些困难,想获得一些关于如何构建它的建议。我正在寻找一些关于创建 UI 组件并将它们链接在一起以创建应用程序流(以编程方式创建 View / Contr
我是一名优秀的程序员,十分优秀!