1

我喜欢在我的公司班级和我的工作单元班级内拥有我的雇主资料库。我已经尝试了下面的测试代码。从数据库重新加载数据后,我的雇主信息库为空。
我有延迟加载活动。

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();

如果我让这些工作,另一个问题应该是:可以为我的雇主使用我的 IObservableRepository(implements ICollection) 而不是 ICollection。我还想将所有公司的所有雇主像一个实体一样放在一起。

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

3 回答 3

1

在我看来,您实际上还没有在代码文件中创建公司和员工之间的关系。您已经完成了 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; }
}
于 2013-03-15T18:54:06.517 回答
1

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

于 2013-03-16T21:54:07.950 回答
0

首先让我说你的代码有点乱。UnitOfWorkCompany(单数)和Employers(复数)。你做unitOfWork.companys.Add(小写)和unitOfWork.companys.Employers.Add(??)。还有... 一个由 sEmployers组成的集合Employee?我认为这些是错别字。

因此,如果我读得很好,您可以插入 aCompany和 anEmployee但从不将两者联系起来。你应该有一个像这样的声明

company.Employees.Add(employee1);

是否可以为我的雇主使用我的 IObservableRepository(implements ICollection) 而不是 ICollection

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

于 2013-03-15T19:25:51.637 回答