我尝试将Entity Framework与代码首先使用 Users 和 Roles 类一起使用。 角色具有我从 OnModelCreating
得出的固定值public class Roles
{
public int Id { get; set; }
public string Description { get; set; }
public Users Users {get;set;}
}
modelBuilder.Entity<Roles>().HasData(
new Roles { Id = 1, Description = "Accountant" },
new Roles { Id = 2, Description = "Marketing manager"},
new Roles { Id = 3, Description = "Purchasing manager" },
new Roles { Id = 4, Description = "Receptionist" },
另一方面,我有 Users 类
public class Users
{
public int Id { get; set; }
public ICollection<Roles> Roles { get; set; } =
new HashSet<Roles>();
public string FName { get; set; }
public string LName { get; set; }
public string Email { get; set; }
}
这就是我在DBContext类中定义它们之间的关系的方式
modelBuilder.Entity<Users>()
.HasMany(pc => pc.Roles);
modelBuilder.Entity<Roles>()
.HasOne<Users>().WithMany(x=>x.Roles);
这是我添加用户对象的方式。
_dbContext.Users.Add(new Users{ FName = "firstName", LName= "LastNAme", Email= "email", Roles = {new Roles{Description="Accountant"}, new Roles{Description="Marketing manager"}} });
_dbContext.Users.Add(new Users{ FName = "firstName1", LName= "LastNAme1", Email= "email1", Roles = {new Roles{Description="Accountant"}, new Roles{Description="Marketing manager"}} });
我有另一个班级说,办公室
public class Office{
public Users users{get; set;}
}
现在,我将 Office 对象与上面新创建的users对象(上面创建的两个users对象)一起保存
_dbContext.Office.Add(users1);
_dbContext.Office.Add(users2);
这里的问题是当我得到办公室列表时,我得到2个办公室的对象,但是在第一个对象中users.roles列表为空,但是办公室的第二个对象包含我保存的users.roles 。如果我要保存3个或4个对象,也会发生同样的情况,总是最后一个对象具有角色列表,而其他对象的角色为空。
var users = await _databaseContext.Office.Include(p => p.Users)
.Include(p=>p.Users.Roles)
.ToListAsync();
我还需要更新代码吗? 提前致谢。