0

我首先使用 EF4 代码填充树,以允许用户将他们的报告组织到文件夹中。我的模型不是很简单,因为它是基于现有数据库的。我有 1 个数据库表映射到模型中的 2 个类(每个层次结构的表),这些类继承自另一个:

  • 基类:组织
  • 继承类:Organization_Report
  • 继承类:Organization_Folder

文件夹具有作为组织实例集合的 Children 属性。在组织类中,我有一个 NumParent 成员和一个导航属性:指向父文件夹的父。

顶级元素具有 NumParent = null。

我希望将没有父级(NumParent = null)的报告分组到“虚拟”(即不持久)文件夹中:“未组织元素”。

换句话说,在查询数据库时,我必须为每个具有 NumParent = Nothing 的报告创建“未组织元素”文件夹并将 Parent 设置为它。保存到数据库时,我希望不添加此文件夹。

EF 有可能吗?

4

1 回答 1

1

它与 EF 无关 - 它是您的应用程序逻辑。EF 只是加载或持久化数据的工具。如果你需要任何额外的东西,你将不得不自己实现它。在这种情况下,您可能需要实现处理程序ObjectContext.ObjectMaterialized以将虚拟文件夹分配给加载的实体,并覆盖ObjectContext.SaveChanges或实现处理程序ObjectContext.SavingChanges以在持久更改之前删除该虚拟文件夹 - 这将很棘手,因为您必须修复对象树并确保存在没有引用您的虚拟文件夹,否则它将被保留。这也意味着在您持久更改后,您的数据将不包含该特殊文件夹。

如果您使用 DbContext API,您仍然可以将您的上下文转换为 ObjectContext 并分配处理程序。

于 2012-04-23T09:55:11.790 回答