繁体   English   中英

导航属性未加载

[英]navigation property is not loaded

我正在使用objectDataSource填充gridview 我有2个简单的课程:

public class Employee
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Gender { get; set; }
    public int Salary { get; set; }
    public Department Department { get; set; }

}

public class Department
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Location { get; set; }
    public List<Employee> Employees { get; set; }
}

我也有

public class EmployeeDBContext : DbContext
{
    public DbSet<Department> Departments { get; set; }
    public DbSet<Employee> Employees { get; set; }

}

现在在我的EmployeeRepository类中

public List<Department> GetDepartments()
{
    EmployeeDBContext employeeDBContext = new EmployeeDBContext();
    return employeeDBContext.Departments.Include("Employees").ToList();
}

即使我添加了.Include(“ Employees”) ,在gridview中也缺少员工。 我在这里做错了什么?

首先,您需要在Employee类中具有一个外键(DepartmentId) 我不知道视频是如何解决的。

public class Employee
{
    public int Id { get; set; }
    public int DepartmentId { get; set; } <=====
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Gender { get; set; }
    public int Salary { get; set; }
    public virtual Department Department { get; set; }
           ^^^^^^^
}

public class Department
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Location { get; set; }
    public virtual ICollection<Employee> Employees { get; set; }
           ^^^^^^^^^^^^^^^^^^
}

public partial class EmployeeDBContext : DbContext
{
    public virtual DbSet<Employee> Employee { get; set; }
    public virtual DbSet<Department> Department { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        // Optional, but good practice to have the mapping here. 
        modelBuilder.Entity<Department>()
            .HasMany(e => e.Employee)
            .WithRequired(e => e.Department)
            .HasForeignKey(e => e.DepartmentId);
    }
}

- 要么 -

DepartmentId属性和[ForeignKey]数据注释添加到Department。

public class Employee
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Gender { get; set; }
    public int Salary { get; set; }    
    public int DepartmentId { get; set; } <=== 

    // Optional, but good practice to have this data annotation attribute. 
    [ForeignKey("DepartmentId")] <=== 
    public Department Department { get; set; }
}

仅供参考:您想使用虚拟的,以防将来有人要使用延迟加载。

你尝试过这样的事情吗

return employeeDBContext.Departments.Include(x =>x.Employees ).ToList();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM