给定一个带有表A的数据库。我想创建一个表B,并在A和B之间添加一个与所需外键的一对一关系。 例如,假设有一个现有的表'Users',然后我们想要向现有用户添加'Roles'。 这些实体的代码第一个定义如下:
public class User
{
public Id UserId { get; set; }
public string Email { get; set; }
public string UserName => Email;
public Roles Role { get; set; }
public int? RoleId { get; set; }
}
public class Roles
{
public string RoleName { get; set; }
public int RoleId { get; set; };
public ICollection<User> GetUsers { get; set; }
}
使用Fluent API的用户的配置方法如下:
public void Configure(EntityTypeBuilder<User> builder)
{
builder.ToTable("User");
builder.HasKey(t => t.UserId );
builder.Property(t => t.UserId ).ValueGeneratedOnAdd();
builder.HasOne(dt => dt.Role)
.WithMany(d => d.GetUsers)
.HasForeignKey(dt => dt.RoleId)
.HasConstraintName("ForeignKey_UserRole")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
}
尝试运行迁移我收到此错误消息:
'ALTER TABLE语句与FOREIGN KEY约束'
冲突通过在两次迁移中拆分此迁移并在它们之间播种数据,我可以构建新数据库:
我的问题与是否存在允许使用代码优先方法添加新关系以及仅使用一次迁移的所需外键的策略有关?
谢谢
旧金山