实体框架导航属性不起作用

时间:2015-08-08 08:31:32

标签: c# ado.net entity-framework-6 navigation-properties

我有很多关系如下。

  • 公司[CompanyID,Name] - nav prop SalaryTabs
  • SalaryTab [ID,Salary,Since,CompanyId,Employeeid] - nav prop (公司,员工)和
  • 员工[EmployeeID,FirstName,LastName,DOB] -nav prop
    (SalaryTabs)

但是当我尝试使用Linq使用navigation属性查询表时。它根本不会出现在intellisence中。

例如,我想访问contxt.SalaryTabs.Company.xxx导航属性公司不会加载xxx,也不会显示在intellisence中,如果我手动输入它。我收到了一些错误。

如果我尝试做类似

的事情
//Delete an employee (identified via id) from a specific company(identified via id)

public bool DeleteEmployeeFromSpecificCompany(Guid employeeID, Guid companyID)
{
    try
    {
        var emp = dbContext.Employees.FirstOrDefault(x => x.EmployeeID == employeeID);
        dbContext.Companies.FirstOrDefault(x => x.CompanyID == companyID).SalaryTabs.Employee.Remove(emp);

        dbContext.SaveChanges();
    }
    catch (Exception)
    {
        return false;
    }
    return true;
}

导航属性不起作用。我无法访问context.Companies.SalaryTab.xxxx。自从我以前没有过的yester以来,我一直有这个问题。我可以使用导航属性从一个实体导航到另一个实体,但现在它不再加载并提供选项。

我感谢任何意见。

2 个答案:

答案 0 :(得分:0)

我不能像之前那样在实体之间导航。我得到了我想删除的员工实体,导航不会让我通过。我没有选择要选择的房产。我昨天整天都在尝试,直到现在都一样。

var emp = dbContext.Employees.FirstOrDefault(x => x.EmployeeID == employeeID);

            dbContext.Companies.FirstOrDefault(x => x.CompanyID == companyID).SalaryTabs.Employee.Remove(emp);

            dbContext.SaveChanges();

答案 1 :(得分:0)

SalaryTabs - 是集合。所以,你需要选择一个:

dbContext.Companies.FirstOrDefault(x => x.CompanyID == companyID).SalaryTabs.FirstOrDefault(...condition...)