我在创建具有一对一关系的新实体时遇到了问题。EF Core 无法正确分配外键。
作为示例,我们以两个实体为例:
public class User
{
public int Id { get; set; }
public int BlogId { get; set; }
public Blog Blog { get; set; }
}
public class Blog
{
public int Id { get; set; }
public int UserId { get; set; }
public User User { get; set; }
}
定义它们之间的关系,以便清楚地了解哪个依赖于哪个:
protected override void OnModelCreating(ModelBuilder builder)
{
builder.Entity<User>()
.HasOne(u => u.Blog)
.WithOne(b => b.User)
.HasForeignKey<Blog>()
.IsRequired();
}
然后当我尝试像这样创建它们时:
var user = new User
{
Blog = new Blog(),
};
await DbContext.Set<User>().AddAsync(user);
await DbContext.SaveChangesAsync();
已Blog
创建,其UserId
属性也已正确设置。但是,的BlogId
属性User
为 0。根据文档,应该可以像这样创建关联实体。
这不适用于一对一关系吗?还是我还遗漏了什么?
顺便说一下,我用的是 Postgres,万一数据库提供商跟它有关呢。另外,EF Core 版本是 9。