C# 选择具有多深度包含的特定列
我正在实体框架中选择一个匿名对象。我正在将子属性包含到匿名对象中 这非常类似于。不同的是,我包括多(两)个层次的深度 例如:C# 选择具有多深度包含的特定列,c#,entity-framework,C#,Entity Framework,我正在实体框架中选择一个匿名对象。我正在将子属性包含到匿名对象中 这非常类似于。不同的是,我包括多(两)个层次的深度 例如: context.Items.Include(x => x.ChildItems.Select(y => y.House)).ToList(); // ^^^^^^^^^^^^^^^^^^^^^ 通过上面的基本选择,将填充ChildItems及其关联的房屋。但是,如果我尝试选择下面这样的匿
context.Items.Include(x => x.ChildItems.Select(y => y.House)).ToList();
// ^^^^^^^^^^^^^^^^^^^^^
通过上面的基本选择,将填充ChildItems及其关联的房屋。但是,如果我尝试选择下面这样的匿名对象,则ChildItems存在,但其House项为null
context.Items.Include(x => x.ChildItems.Select(y => y.House))
.Select(x => new
{
x.ItemID,
x.OtherInfo,
x.ChildItems,
}).ToList();
你为什么要这样做?大多数ORM的要点是具体化表示数据库中的行的运行时类。@ErikPhilips这是选择数据时选择特定列(或者,在下面,省略特定列)的标准方法。如果一个表的列数过多,或者某些列的数据量过多,而不需要从数据库中回调,那么您可以对查询表执行匿名选择,然后将其重新具体化到实体中。在执行此操作时,不要使用实体框架或任何ORM。并用不需要的属性具体化对象。否则,如果您不打算将它们映射到真实对象,请不要使用EF。