ef mysql 外键 一对一_EFCore-一对一配置外键小记2

在配置EFCore中一对一外键关联时遇到错误,提示属性有临时值。问题出现在TagItem与TagUseCount的关联配置上。正确做法是明确指定TagUseCount的Id作为外键,且TagUseCount实体需包含HasKey设置其Id为主键。
摘要由CSDN通过智能技术生成

前后两次遇到这样的错误:

The property 'xx' on entity type 'xxxx' has a temporary value. Either set a permanent value explicitly or ensure that the database is configured to generate values for this property.

多数情况下是表配置关系会出现这样的问题。我实在配置TagItem一对一关联TagUseCount出现的问题:

public void Configure(EntityTypeBuilder builder)

{

builder.ToTable("Tags")

.HasKey(x => x.Id);

builder.Property(x => x.Id).HasColumnName("TagId");

builder.Property(x => x.TagName);

builder.HasOne(x => x.TagUseCount)

.WithOne(x => x.Tag)

.HasForeignKey(x => x.Id);

}

以及

public void Configure(EntityTypeBuilder builder)

{

builder.ToTable("TagUseCount");

builder.Property(t => t.Id)

.HasColumnName("TagId");

builder.Property(t => t.UseCount);

}

以上配置有两点错误,都是调试后总结出来的:

TagItem 关联TagUseCount 需要指定的是关联表的外键,也就是TagUseCount的Id,不能指定自己哦!

TagUseCount千万别偷懒或忘记写 builder.HasKey(x => x.Id);

8315c013113822439fe7030a236bdb22.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值