当前位置: 首页 > 面试题库 >

实体框架无法在没有标识列的表上工作

单于淇
2023-03-14
问题内容

我有下表:

create table tbl
(
    id int identity(1,1),
    val varchar(100)
)

现在,当我使用实体框架将对象映射到该表时,它可以工作,但是当我按以下方式更改表html" target="_blank">定义时:

create table tbl1
(
    id int,
    val varchar(100)
)

实体框架不会将对象映射到该表。关于为什么发生这种情况的任何线索将不胜感激。


问题答案:

实体框架需要主键才能从数据库生成模型。如果表上没有主键,它将仅选择不可为空的列作为连接的主键,并且实体将为只读/只读。

在第一个表中,身份定义使id列不可为空,因此您可以创建一个Entity。添加该表时,您应该已经看到以下消息:

“表/视图’tbl1’没有定义主键。已经推断出该键,并且该定义已创建为只读表/视图。”

但是,在第二个表中,没有不可为空的列,EF无法为其创建实体。尝试添加消息时,请参阅消息:

“表/视图’tbl1’没有定义主键,因此无法推断出有效的主键。此表/视图已被排除。要使用实体,您需要查看架构,添加正确的键,并取消注释。”



 类似资料:
  • 问题内容: 我有两个表,和。有一个字段,它通过外键指向具有相同名称的字段。它还具有在该字段上声明的唯一密钥。不可为空。这意味着关系必须为0..1到1,因为每个 记录都必须具有唯一的而不是空的记录。 实体框架不这样看。我收到以下错误: 这是什么问题 如何使EF识别适当的关系多重性? 问题答案: EF抱怨是因为听起来您正在使用FK关联-这意味着VisualizationID是Entity的属性,并且也

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

  • 我正在使用Spring Boot 1.5.10和Spring Boot starter数据jpa。我有一个暂存表和一个生产表,它们都有相同的结构,只是表名不同。列包括: 复合键1 复合键2 复合键3 列A 列B c列 我收到以下错误: 原因:org.hibernate.注释异常:没有为实体指定标识符:com.foo.bar.StagingTbl 我有一个复合主键,类定义为: 我的具体类: 标识符应

  • 如何将YAML列表加载到Spring框架项目中的Java列表(没有springboot)? 我看到它在springboot项目中与一起工作。但我无法让它在纯spring框架项目中使用。似乎注释无法正确解析列表。 下面是一个示例项目:https://github.com/KiranMohan/spring-yaml. 为了加载yaml文件,我使用了。 代码在jUnit类中进行测试。 输出is 示例y

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

  • 我正在学习这个教程。net电影教程,我的模型中有两个简单的文件。 另一个是Visual Studio给我的帐户模型: 问题是......如果我再加上一句话 对于UserProfile类,我在迁移中没有得到任何更改。。。。这是因为迁移只更新MovieDBContext中的类。。。。因此,我必须补充如下内容: 问题是,在另一个项目中,我试图更新会计模型,并尝试了这个解决方案,但它没有工作......有