当前位置: 首页 > 知识库问答 >
问题:

如何在实体框架5中包含子对象的子对象

郏博瀚
2023-03-14

我正在使用Entity Framework 5 code FirstASP.NET MVC 3

我正在努力获取子对象的子对象来填充。下面是我的课。

应用程序类;

public class Application
{
     // Partial list of properties

     public virtual ICollection<Child> Children { get; set; }
}

子类:

public class Child
{
     // Partial list of properties

     public int ChildRelationshipTypeId { get; set; }

     public virtual ChildRelationshipType ChildRelationshipType { get; set; }
}

ChildRelationshipType类:

public class ChildRelationshipType
{
     public int Id { get; set; }

     public string Name { get; set; }
}

存储库中GetAll方法的一部分,以返回所有应用程序:

return DatabaseContext.Applications
     .Include("Children");

子类包含对ChildRelationshipType类的引用。要处理应用程序的子级,我需要这样做:

foreach (Child child in application.Children)
{
     string childName = child.ChildRelationshipType.Name;
}

我在这里得到一个错误,即对象上下文已经关闭。

如何指定每个子对象必须包括ChildRelationshipType对象,就像我上面所做的那样?

共有1个答案

贲凌
2023-03-14

如果包含库System.Data.Entity,则可以使用include()方法的重载,该方法采用lambda表达式而不是字符串。然后,您可以使用Linq表达式而不是string路径在子级上select()

return DatabaseContext.Applications
     .Include(a => a.Children.Select(c => c.ChildRelationshipType));
 类似资料:
  • 我目前正在使用实体框架来建立一个论坛使用ASP。NET MVC I有3个主要模型[类别]1--*[论坛]1--*[帖子] 如果我有5个类别,每个类别有4个论坛,每个论坛有1000个帖子,我只想显示类别,当我这样做的时候,这意味着我也选择了20000个帖子?? 因为每个类别对象都有一个列表

  • 当我使用实体框架保存实体时,我自然假设它只会尝试保存指定的实体。但是,它也在尝试保存该实体的子实体。这会导致各种完整性问题。如何强制EF只保存我要保存的实体并因此忽略所有子对象? 如果我手动将属性设置为null,我会收到一个错误“操作失败:无法更改关系,因为一个或多个外键属性不可为空。”这是非常适得其反的,因为我专门将子对象设置为null,因此EF不会管它。 为什么我不想保存/插入子对象? 由于这

  • 为什么EF首先插入具有依赖关系的子对象(PersonnelWorkRecord),然后插入它所依赖的对象(TimesheetActivity)。还有,在纠正这一点上,我有什么选择? 我不确定我是否理解Entity Framework为什么/如何按顺序插入对象,但下面是我用来插入父对象和几个子对象的代码。 运行代码时,PersonnelWorkRecord(TimesheetActivityID)上

  • 实体框架5.0首先使用现有数据库编写代码。使用电动工具对类进行逆向工程。一切都很好。数据库有两个表。一个父母和一个孩子的外键返回到父母ID。ID都是带有自动增量的int。我添加了许多父母记录,现在想将孩子记录添加到特定的父母。我能看到的唯一方法是通过在父母表中搜索名称或其他属性并返回ID来找到适当的父母ID。然后在添加孩子时在外键属性中使用该ID。我不想设置新父母,所以这是将孩子添加到现有父母的唯

  • 问题内容: 我正在将子系统从 NHibernate 移植到 Entity Framework, 并希望看到将以下查询移植到 EF 的最佳方法。 帐户余额类别为: 该表是: 示例数据是(使用数字ID可以更好地理解): 该 AccountBalanceByDate 实体持有某一天的账户余额。如果某天没有交易,则该天将没有 AccountBalanceByDate ,我们应该查看前几天以查看该帐户的余额

  • 本文向大家介绍在Python的Django框架中显示对象子集的方法,包括了在Python的Django框架中显示对象子集的方法的使用技巧和注意事项,需要的朋友参考一下 现在让我们来仔细看看这个 queryset 。 大多数通用视图有一个queryset参数,这个参数告诉视图要显示对象的集合。 举一个简单的例子,我们打算对书籍列表按出版日期排序,最近的排在最前: 这是一个相当简单的例子,但是很说明问