首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >无法插入重复的密钥。复合主键。ASP.NET实体框架

无法插入重复的密钥。复合主键。ASP.NET实体框架
EN

Stack Overflow用户
提问于 2020-04-08 16:06:54
回答 1查看 171关注 0票数 0

我正在尝试使用实体框架创建应用程序。

这是我想要做的(每个实体也有Id ):

在本例中,我想使用复合主键(PatientId + DiagnosisId)。在Patient model类中有一个诊断集合:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public ICollection<Diagnosis> Diagnoses { get; set; }

public class Diagnosis
{
    [Required]
    [MaxLength(200)]
    public String Type { get; set; }
    public String Complications { get; set; }
    public String Details { get; set; }

    public Int32 DiagnosisId { get; set; }

    public Patient Patient { get; set; }
    public Int32 PatientId { get; set; }
}

同样在我定义的数据库上下文中

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public DbSet<Diagnosis> Diagnoses { get; set; }

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
modelBuilder.Entity<Diagnosis>().HasKey(x => new { x.DiagnosisId, x.PatientId });

OnModelCreating方法中创建复合主键。

在一个ASP.NET MVC CRUD控制器中,我创建了Diagnosis,每次DiagnosisId都是相同的= 0。而且我不能将新数据粘贴到数据库中,因为它就像是重复的。这是我在Pastebin上的create post方法,如果它能有所帮助的话

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-08 16:13:01

首先是父键:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
modelBuilder.Entity<Diagnosis>().HasKey(x => new { x.PatientId, x.DiagnosisId });

因为你想要一个特定专利的所有诊断信息存储在一起。

并且您需要请求由数据库生成密钥。对于EF Core its:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
modelBuilder.Entity<Diagnosis>().Property(r => r.DiagnosisId).ValueGeneratedOnAdd();

对于EF6,它是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
modelBuilder.Entity<Diagnosis>().Property(r => r.DiagnosisId).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61105090

复制
相关文章
laravel 预加载特定的列
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/112351.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/08
7140
laravel 预加载特定的列
用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列。
数据库中有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列。
全栈程序员站长
2022/07/09
1.7K0
PostgreSQL 列转行问题
SELECT relative_label_content FROM frk_s.label_cor_gene
全栈程序员站长
2022/07/04
1.1K0
Postgresql 强制修改列的类型
当列的类型为字符类型,当我们想修改为数值类型时,是无法成功的,这个时候我们可以通过以下方法进行修改。
飞奔去旅行
2019/06/13
2.9K0
从DataFrame中删除列
在操作数据的时候,DataFrame对象中删除一个或多个列是常见的操作,并且实现方法较多,然而这中间有很多细节值得关注。
老齐
2021/03/29
7.1K0
问与答130:如何比较两列文本是否完全相同?
Q:最近,我的一项任务是需要比较包含多行数据的两列中,每行对应列的文本是否完全相同。例如,列A中有一系列文本,列B中也有一系列文本,比较A1中的文本是B1中的文本是否完全相同,A2与B2中的文本是否完全相同,……,等等。
fanjy
2021/08/31
2K0
性能优化-如何选择合适的列建立索引
1、在where从句,group by从句,order by从句,on从句中的列添加索引 2、索引字段越小越好(因为数据库数据存储单位是以“页”为单位的,数据存储的越多,IO也会越大) 3、离散度大的列放到联合索引的前面
cwl_java
2020/02/13
2.1K0
性能优化-如何选择合适的列建立索引
如何隐藏table 中的指定列?
如何隐藏table 中的指定列?当页面需要显示的内容太多,而页面宽度又不够,不想内容显示太混乱,常常会将指定的列暂时隐藏掉,那么如何让实现呢?
爱明依
2019/03/12
6.9K0
sublime 列选择 原
2016年11月17日 09:27:24 zzh_my 阅读数:20295 标签: sublime text 更多
拓荒者
2019/03/08
2.6K0
将Excel特定某列数据删除
我们之前将表单内的某列数据分到新的excel文件里,那么如何批量将新Excel文件这一特定列进行删除呢?
繁华是客
2023/03/03
2K0
分布式 PostgreSQL 集群(Citus),分布式表中的分布列选择最佳实践
在 Citus 集群上运行高效查询要求数据在机器之间正确分布。这因应用程序类型及其查询模式而异。
为少
2022/03/31
4.5K0
分布式 PostgreSQL 集群(Citus),分布式表中的分布列选择最佳实践
SQL如何只让特定列中只显示一行数据
我们如果在某个表里面,如何让其中某列的其中一行数据,只是显示一次呢? 示例表 StudentID Last_Name First_Name Gender GradeLevel Class Pupil_Email Relationship Pupil_Parent_Email 5013 Wang Zack M Grade 9 Senior SG9 B 5013@example.com 爸爸 5013a@qq.com 5013 Wang Zack M Grade 9 Senior SG9 B 5013@exam
繁华是客
2023/03/03
8.8K0
Mysql中的列类型
支持的范围是1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
Tony He
2022/11/17
6.5K0
根据表格特定列的内容来追加图标 原
(adsbygoogle = window.adsbygoogle || []).push({});
tianyawhl
2019/04/04
1.4K0
如何生成A-AZ列 excel表的列 不用序号的那种?
前几天在Python最强王者交流群【逸】问了一个Pyhton处理Excel的问题,这里拿出来给大家分享下。
前端皮皮
2022/12/19
1.7K0
如何生成A-AZ列 excel表的列 不用序号的那种?
Postgresql在哪里使用列统计信息?
对pg_statistic表的查询都是走syscache的,要找到所有使用列统计信息地方,遍历系统表索引即可
mingjie
2023/10/13
1590
Postgresql在哪里使用列统计信息?
PostgreSQL表用户列最大个数
有些业务可能有这么个需求:需要增加用户列,即通过ALTER TABLE ... ADD...来添加用户列。那么PG/GP中是否会有列个数的限制呢?
yzsDBA
2023/09/08
3250
PostgreSQL表用户列最大个数
删除列中的 NULL 值
今天接到一个群友的需求,有一张表的数据如图 1,他希望能通过 SQL 查询出图 2 的结果。
白日梦想家
2020/07/20
9.9K0
删除列中的 NULL 值
R语言:以多列标准筛选特定行
在本期,我们会运用一个病例数据为大家进行讲解示范,这也是大猫课堂第一次针对阅读者提问进行的反馈,也希望大家能提供一些有趣的问题,来和我们一起分享,同时也感谢读者孤鹜惜秋,与我们分享其问题。话不多说,马上进入正题。
用户7652506
2020/08/12
2K0
R语言:以多列标准筛选特定行
分离链接的散列散列代码实现
散列 散列为一种用于以常数平均时间执行插入,删除和查找的技术。一般的实现方法是使通过数据的关键字可以计算出该数据所在散列中的位置,类似于Python中的字典。关于散列需要解决以下问题: 散列的关键字如何映射为一个数(索引)——散列函数 当两个关键字的散列函数结果相同时,如何解决——冲突 散列函数 散列函数为关键字->索引的函数,常用的关键字为字符串,则需要一个字符串->整数的映射关系,常见的三种散列函数为: ASCII码累加(简单) 计算前三个字符的加权和$\sum key[i] * 27^{i}$ (不太
月见樽
2018/04/27
1.6K0

相似问题

增强序列化-启用对象跟踪

12

在MVC4项目中使用Json.NET序列化程序

30

用JSON.net反序列化Api对象

13

WCF、Silverlight 5、自跟踪实体和(反)序列化

10

如何在Asp.Net核心项目中使用Application Insights启用依赖项跟踪

17
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文