Estou com problemas para criar novas entidades com relacionamentos um-para-um. O EF Core não está atribuindo as chaves estrangeiras corretamente.
Como exemplo, vamos pegar duas entidades:
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; }
}
Defina o relacionamento deles de modo que fique claro qual depende de qual:
protected override void OnModelCreating(ModelBuilder builder)
{
builder.Entity<User>()
.HasOne(u => u.Blog)
.WithOne(b => b.User)
.HasForeignKey<Blog>()
.IsRequired();
}
Então, quando tento criá-los assim:
var user = new User
{
Blog = new Blog(),
};
await DbContext.Set<User>().AddAsync(user);
await DbContext.SaveChangesAsync();
O Blog
foi criado e sua UserId
propriedade está definida corretamente. No entanto, a BlogId
propriedade de User
é 0. De acordo com a documentação , deve ser possível criar entidades relacionadas como esta.
Isso não se aplica a relacionamentos individuais? Ou há algo mais que não estou percebendo?
A propósito, estou usando o PostgreSQL, caso o provedor do banco de dados tenha algo a ver com isso. Também estou usando o EF Core versão 9.