【发布时间】:2016-12-23 16:48:23
【问题描述】:
这个简单的 linq 查询适用于 LinqPad 5,但不适用于 EF Core。 当我运行它时,我得到“System.NullReferenceException:对象引用未设置为对象的实例。”。但是靠什么?我检查了上下文,所有上下文都有数据。
var query = "kost";
var specialtyPageIds =
(from pageSpecialty in Page_Specialties
join s in Specialties on pageSpecialty.SpecialtyId equals s.Id into ps
from s in ps.DefaultIfEmpty()
join cs in CustomSpecialties on pageSpecialty.CustomSpecialtyId equals cs.Id into pcs
from cs in pcs.DefaultIfEmpty()
where s.Name.Contains(query) || cs.Name.Contains(query)
select pageSpecialty).ToList();
【问题讨论】:
-
您可以在调试器中使用 Step-Into 来准确查看问题所在。我们真的无法提供更多帮助,因为几乎所有这些项目都可能为空。
-
我刚刚意识到 SpecialtyId 和 CustomSpecialtyId 是可为空的整数。这可能是问题吗?
-
这当然是可能的。如果您有办法在找到 null 时将它们强制为 0,那可能会解决您的问题。
-
我得到了这个错误:public int Id { get;放;但它是由 db 自动生成的,所以它不能为 null 或 0。
标签: c# linq entity-framework-core