实体框架延迟加载问题

本文关键字:问题 延迟加载 框架 实体 | 更新日期: 2023-09-27 18:04:02

我喜欢在我的公司类中有我的雇主存储库在我的工作单位里。我尝试了下面的测试代码。从数据库重新加载数据后,My Employers Repository为空。

public class Company
{
    public int Id { get; set; }
    public string CompanyName { get; set; }
    public ICollection<Employee> Employers { get; set; }
}
public class Employee
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string SureName { get; set; }
}   
TEST CODE :
var company = new Company();
var employee1 = new Employee();
employee.Name = "myFirst employee";
unitOfWork.companys.Add(companys);
unitOfWork.Commit();
unitOfWork.companys.Employers.Add(employee1);
uow.Commit();

如果我得到这些工作的另一个问题应该是:它可能使用我的iobservableerepository (implements iccollection)而不是为我的雇主募捐。我还想把所有公司的老板聚集在一起单一的实体。

public class UnitOfWork
{
    public IObservableRepository<Company> Company { get { return GetRepo<IObservableRepository<Company>>(); } }
    public IObservableRepository<Employee> Employers { get { return GetRepo<IObservableRepository<Employee>>(); } }
}

实体框架延迟加载问题

在我看来,您还没有在代码文件中实际创建Company和Employee之间的关系。您已经完成了Company部分(包含员工集合),但是您还需要在Employee上包含几个属性以确定关系:

public class Employee
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string SureName { get; set; }
    [ForeignKey("Company"), Required]
    public int CompanyID { get; set; }
    public virtual Company Company { get; set; }
}

ProxyCreationEnabled被禁用。感谢IronMan84解决了另一个问题

首先请允许我说你的代码有点乱。UnitOfWorkCompany(单数)和Employers(复数)。还有unitOfWork.companys.Add(小写)和unitOfWork.companys.Employers.Add (?? ?)和…由Employee s组成的Employers集合?我想这些是打字错误。

所以如果我没看错的话,你插入了一个Company和一个Employee,但从来没有把它们联系起来。你应该有一个像

这样的语句
company.Employees.Add(employee1);

是否可以使用我的iobservableerepository (implements ICollection)来代替我的雇主的ICollection

不,不是。EF不会为你创建一个IObservableRepository<Employee>。它甚至不知道应该首先使用哪个具体类,但它需要一个由EntityCollectionHashSetList等集合类实现的接口。