EF4:不是持久元素

时间:2012-04-23 08:31:43

标签: entity-framework code-first

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

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

文件夹具有Children属性,该属性是Organization实例的集合。 在Organization类中,我有一个NumParent成员和一个导航属性:Parent指向父文件夹。

顶级元素的NumParent = null。

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

换句话说,在查询数据库时,我必须创建“Not organized elements”文件夹,并为每个具有NumParent = Nothing的Report设置Parent。 保存到数据库时,我希望不添加此文件夹。

这可能与EF有关吗?

1 个答案:

答案 0 :(得分:1)

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

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