当前位置: 首页 > 知识库问答 >
问题:

实体框架中是否可以有没有主键的表?

罗鸿畴
2023-03-14

我只是在练习msdn中的代码第一个新数据库实体框架,我想知道是否可以在代码第一个新数据库EF中创建没有主键的表?

共有3个答案

徐弘图
2023-03-14
  1. Entity Framework必须在为表建模的实体(POCO类)上标识一个键。
  2. 您在Entity Framework中定义的键不需要存在于底层数据库中(例如sql表)。

如果您的SQL表没有主键,您仍然可以在实体框架中对其进行建模,您只需要为该实体定义一个键。选择实体上的一个或多个(可能是所有)列,组合后将在实体集合中唯一标识该实例。请注意,这仅对更新或删除实体很重要,因为它们需要与该集合中的其他实体唯一标识才能针对更改。查找/选择和添加/插入不需要这种一致性

路和悌
2023-03-14

不可以,因为实体框架需要知道在进行更新或删除操作时跟踪对象的关键点。

不管怎样,没有PrimaryKey的桌子不是个好主意

元英朗
2023-03-14

EF可以使用数据库做什么和使用数据库可以做什么之间存在很大差异。

大多数数据库允许表没有主键。大多数数据库还允许表不包含聚集索引/索引组织的表(或其他数据库系统中的特定术语)。

这没有什么错,不应该说没有PK的表是个坏主意。

一如既往,它取决于特定表的需要和使用。e、 g.日志表,不需要PK。它永远不会用作FK,那么它有什么用途呢?

总之,EF不支持没有开箱即用键的表格,有一些奇怪的变通方法,但我见过的都不够好。这很遗憾。

 类似资料:
  • 在ASP中。NET MVC,用于创建具有实体框架的模型,表上的主键是必需的吗?

  • 我正在使用实体框架映射一些表,但除非我声明一些列作为主键,否则我无法这样做。 这里的问题是,数据库中的表没有主键,并且有数百万行。我没有创建新Id列的权限。 Obs:如果我将属性添加到诸如

  • 我有一个关于将弱实体从e-r模型转移到sql表的问题。具体地说,我使用的是MySQL。 假设我有表hotels,其中每个酒店都有主键id,名为id。

  • 是否可以在没有实体的情况下使用JpaRepository?在这种情况下,将其替换为DTO。 如下示例所示 这种情况有替代方案吗? 注意:DTO已经映射,但我不想创建视图来将此DTO转换为实体。 我已经验证了这个主题,但没有重大进展,请使用无实体的JpaRepository交互样式 我在试这个 接口- 公共接口BffDTOInterface2{ } 我有这个错误

  • 问题内容: 这可能是太多基于意见的问题,但这里有: 我发现了与实体框架和数据库迁移有关的一个有趣的怪癖。看来,每当我们创建外键时,它也会在该列上创建索引。 我读了一个SO问题:实体框架代码第一个外键添加索引,每个人似乎都说这是一个很好的,有效的主意,但我不知道怎么做。索引列是非常特定于环境的。例如,EF索引了我的表上几乎从来没有(〜1%)用于搜索的FK,并且也索引了源表,这意味着即使我加入其他表,

  • 我有一个实体类,jpa正在抛出一个验证异常,说明指定了主键。我不明白为什么。 请参阅下面的详细信息:*内部异常:javax.Persistence.persistenceException:Exception[EclipseLink-28018](Eclipse Persistence.Exceptions.EntityManagerSetupException异常描述:Predeployment