在一个 .NET Core 项目中使用 Entity Framework Core 时遇到了下面的错误:
The child/dependent side could not be determined for the one-to-one relationship between 'BlogPost.ViewCount' and 'ViewCount'. To identify the child/dependent side of the relationship, configure the foreign key property
BlogPost 与 ViewCount 的 one-to-one 关系是这么配置的:
builder.HasOne(blogPost => blogPost.ViewCounter).WithOne();
modelBuilder.Entity<ViewCount>().HasKey(v => v.EntryId);
ViewCount 的主键 EntryId 保存的就是 BlogPost 的主键 Id 的值。
请问如何解决这个问题?
改为 builder.OwnsOne(post => post.ViewCounter);
后问题解决
builder.HasOne(blogPost => blogPost.ViewCounter).WithOne();
这里明确指定外键属性。如下:
builder.HasOne(blogPost => blogPost.ViewCounter).WithOne(viewcount=>viwcount.BlogPost).HasForeignKey<ViewCount>(k=>k.EntryId);
dudu老大一对一关系建议明确指定主从关系。如上你所指定无法判断谁是主谁是依赖。
WithOne 这样的查询是内连接,那么请问要怎么实现左链接?
你的这一种是实现值对象, 一对一外键还是下面这一种
entity.HasOne(p => p.ViewCounter)
.WithOne()
.HasForeignKey<BlogPost>(p => p.BlogPostd)
.OnDelete(deleteBehavior: DeleteBehavior.Cascade);