实体框架核心2.1返回空列表一对多关系C#

时间:2018-07-12 15:05:02

标签: c# entity-framework xamarin.forms entity-framework-core

我尝试将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();

我还需要更新代码吗? 提前致谢。

0 个答案:

没有答案