首页 新闻 会员 周边 捐助

EF Core 一对一关系映射问题

0
悬赏园豆:50 [已解决问题] 解决于 2018-10-08 18:15

在一个 .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 的值。

请问如何解决这个问题?

dudu的主页 dudu | 高人七级 | 园豆:30948
提问于:2018-10-07 15:53
< >
分享
最佳答案
0

改为 builder.OwnsOne(post => post.ViewCounter); 后问题解决

dudu | 高人七级 |园豆:30948 | 2018-10-08 18:14
其他回答(2)
0

builder.HasOne(blogPost => blogPost.ViewCounter).WithOne();
这里明确指定外键属性。如下:

builder.HasOne(blogPost => blogPost.ViewCounter).WithOne(viewcount=>viwcount.BlogPost).HasForeignKey<ViewCount>(k=>k.EntryId);

dudu老大一对一关系建议明确指定主从关系。如上你所指定无法判断谁是主谁是依赖。

收获园豆:50
Jeffcky | 园豆:2789 (老鸟四级) | 2018-10-07 19:43

WithOne 这样的查询是内连接,那么请问要怎么实现左链接?

支持(0) 反对(0) 外咯 | 园豆:200 (初学一级) | 2020-04-17 11:30
0

你的这一种是实现值对象, 一对一外键还是下面这一种

entity.HasOne(p => p.ViewCounter)
                    .WithOne()
                    .HasForeignKey<BlogPost>(p => p.BlogPostd)
                    .OnDelete(deleteBehavior: DeleteBehavior.Cascade);
菜洋 | 园豆:202 (菜鸟二级) | 2020-12-25 17:15
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册