the*_*eal 6 c# sql entity-framework
我正在尝试做:
var abc = Context.PersonSet.Include(p=>p.Child).ToList();
Run Code Online (Sandbox Code Playgroud)
但并不是所有的人都有孩子。所以我得到:
小智 6
返回空子级而不是 null
Context.PersonSet.Include(a => ((a.Child == null) ? new Collection<Child>() : a.Child));
Run Code Online (Sandbox Code Playgroud)
我不知道为什么人们一直在为这样的解决方案投票:
Include(p => p.NavProp ?? new List<NavPropType>())
Run Code Online (Sandbox Code Playgroud)
因为那行不通,所以对以下情况无效Include():
无效操作异常:
Include 属性 lambda 表达式
p => (p.NavProp ?? value(System.Collections.Generic.List'1[NavPropType]))无效。该表达式应表示属性访问:t => t.MyProperty。要定位在派生类型上声明的导航,请指定目标类型的显式类型化 lambda 参数,例如
(Derived d) => d.MyProperty。有关包含相关数据的详细信息,请参阅http://go.microsoft.com/fwlink/?LinkID=746393。
解决方案:使用默认值声明您的属性:
public class Foo
{
public List<Bar> Bars { get; set; } = new List<Bar>();
}
Run Code Online (Sandbox Code Playgroud)
这可以确保Bars不会null在没有找到相关记录。