【问题标题】:Entity framework - select nullable join property实体框架 - 选择可为空的连接属性
【发布时间】:2012-03-28 09:24:11
【问题描述】:

我的表结构如下:

Account
 AccountId
 LoginName
 EmployeeId - nullable
Employee
  FirstName,
  SecondName,
  etc..

我有疑问:

   var data = from o in _accountRepository.AsQueryableWithIncludes(x => x.Employee, x => x.Permissions)
               select new AccountGridVM
               {
                   AccountId = o.AccountId,
                   EmployeeFirstName = o.EmployeeId == null ? String.Empty: o.Employee.FirstName,
                   LoginName = o.LoginName,
                   Permissions = o.Permissions.Select(s => s.NameCZ)
               };
    return View(new GridModel { Data = data });

我的问题是在 EmployeeFirstName 中的 Tenar 运算符中,实体框架总是只获取分配了employeeId 的帐户,但我需要获取所有帐户。

如果我删除 EmployeeFirstName 属性,则获取所有行。

问题出在哪里?

谢谢

【问题讨论】:

  • 你试过o.Employee == null而不是o.EmployeeId == null吗?
  • 是的,试试 o.EmployeeId.HasValue, o.Employee == null, o.EmployeeId = null

标签: sql linq entity-framework-4 linq-to-entities


【解决方案1】:

问题解决了。我在映射时出错了。

  //bad
  HasRequired(x => x.Employee).WithMany().HasForeignKey(x => x.EmployeeId); // inner join

  //good
  HasOptional(x => x.Employee).WithMany().HasForeignKey(x => x.EmployeeId); // left join

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-22
    • 1970-01-01
    • 2016-03-29
    • 1970-01-01
    • 1970-01-01
    • 2018-12-19
    • 1970-01-01
    相关资源
    最近更新 更多