Man*_*ons 5 .net c# entity-framework-core
我正在尝试创建一个具有多对多关系的模型:
一个公司可以有0个或更多用户
一个公司可以有0个或更多角色
多对多关系是用户和角色之间的关系
每次尝试创建数据库(更新数据库)时,都会显示以下消息:
在表'UsersRoles'上引入FOREIGN KEY约束'FK_UsersRoles_Users_UserId'可能会导致循环或多个级联路径。指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束。
我不明白它指的是什么周期。我的意思是,如果删除用户,则必须删除UsersRoles内的实体,仅此而已。如果删除角色也是如此。
如果我的模型只有“用户和角色”,而没有“公司”表,那么将创建数据库。
我究竟做错了什么?
public class MyContext : DbContext
{
public DbSet<Company> Companies { get; set; }
public DbSet<User> Users { get; set; }
public DbSet<Role> Roles { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("Server = (localdb)\\mssqllocaldb; Database = ConsoleApp1; Trusted_Connection = True; MultipleActiveResultSets = true");
base.OnConfiguring(optionsBuilder);
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<UserRole>()
.ToTable("UsersRoles")
.HasKey(t => new { t.UserId, t.RoleId });
modelBuilder.Entity<UserRole>()
.HasOne(pt => pt.User)
.WithMany(p => p.UsersRoles)
.HasForeignKey(pt => pt.UserId);
modelBuilder.Entity<UserRole>()
.HasOne(pt => pt.Role)
.WithMany(t => t.UsersRoles)
.HasForeignKey(pt => pt.RoleId);
base.OnModelCreating(modelBuilder);
}
}
public class Company
{
public int Id { get; set; }
public string Name { get; set; }
public ICollection<User> Users { get; set; }
public ICollection<Role> Roles { get; set; }
}
public class User
{
public int Id { get; set; }
public string Surname { get; set; }
public int CompanyId { get; set; }
public Company Company { get; set; }
public ICollection<UserRole> UsersRoles { get; set; }
}
public class Role
{
public int Id { get; set; }
public string Name { get; set; }
public int CompanyId { get; set; }
public Company Company { get; set; }
public ICollection<UserRole> UsersRoles { get; set; }
}
public class UserRole
{
public int UserId { get; set; }
public User User { get; set; }
public int RoleId { get; set; }
public Role Role { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1308 次 |
| 最近记录: |