繁体   English   中英

修改对象而不影响Entity Framework中的基础数据库表?

[英]Modify object without affecting base database table in Entity Framework?

我有一个包含大量表的postgres数据库。 该项目是使用实体框架实现的。

我有3个数据库类,可以说A,B和C。类A包含B对象的列表。 B类包含C对象的列表。 C类是包含一些字段的简单类。

这些类的开始看起来像这样:

[Table("A")]
public class A: GUIDModelBase
{....
}

数据填写如下:

Parent1 [A]
    -Child1 [B]
        --Grandchild1 [C]
        --Grandchild2 [C]
    -Child2 [B]
        --Grandchild3 [C]
        --Grandchild4 [C]

对于某些特定要求,我使用如下API将表的数据检索到对象A中:

A AObj = commonDbService.ARepository.GetAById(A.Id);

GetAById是使用dbset实现的,如下所示:

protected DbSet<TEntity> dbset = null;
public Project GetAById(Guid id)
{
    return dbset.Include(x => x.CoordinateSystem)
        .SingleOrDefault(p => p.Id == id);
}

我想操作(不想有Grandchild2和Grandchild4)并将AObj的数据存储在另一个类对象中,如下所示:

MigrationData md = new MigrationData();
md.ANewObj = Manipulate(AObj);  //Removes two grandchildren elements

当我这样做时,甚至AObj也会被完全修改。 我需要在AObj以及数据库表中保持完整的数据(但是暂时需要重新启动我的应用程序)。 表数据显示在UI页面之一中。 如上几行所述,UI页面一经修改,仅显示剩余的2个孙代。 但是,如果我重新启动应用程序,则所有子孙都存在于数据库中。

因此,如果不修改基础数据库表,就无法单独修改它。 谁能帮我做到这一点?

简短的答案是,这取决于对象的实际操作。 如果要在将对象附加到上下文的同时对其进行修改,则可以,如果调用SaveChanges,则Entity Framework将看到该对象已修改,并将对其进行更新。 要么分离您想要分离的对象,以便您可以自由地对其进行处理,要么不进行更改,而是将其映射/克隆到新对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM