entity framework:更新影响对象

我遇到了EF Update方法的问题。

我有一个包含多个信息和其他复杂对象的对象例如当我调试我的object.otherObject包含数据时。

然后我用以下行更新它:

_dbContext.Update(object); 

问题是在更新调用之后,我的object.otherObject失去了它的值并变为null。

当尝试使用不同的操作(用户界面操作)和相同的对象(不同的值)时,我不会遇到这个问题。

根据我对EF更新的理解,它应该将对象标记为已修改但保持完整。

编辑:

我的映射文件是:

 internal class ObjectConfiguration: EntityTypeConfiguration { public ObjectConfiguration() { ToTable("TABLE_NAME", Properties.Settings.Default.DBSchema); HasKey(s => s.Id); Property(s => s.Id).HasColumnName("COLUMNNAME"); } } 

编辑2:

_dbContext是根据EF 5存储库和工作单元格构建的自定义对象:

https://docs.microsoft.com/fr-fr/aspnet/mvc/overview/older-versions/getting-started-with-ef-5-using-mvc-4/implementing-the-repository-and-unit-的工作图案,在安-ASP净MVC应用程序

像这样:

 public class UserManager : IDisposable { private readonly IRepository _dbContext; } public interface IRepository { TEntity Update(TEntity entity) where TEntity : class; } 

编辑3:

在通过Attach函数时,对象实际上会清空其值:

 public TEntity Update(TEntity entity) where TEntity : class { try { TEntity attachedEntity = Set().Attach(entity); var entry = Entry(entity); entry.State = System.Data.EntityState.Modified; } catch(Exception e) { } return entity; } 

我不知道你的映射是怎样的,但你可以使用这样的东西

 public class Example { //ohter properties [Column("id_reference") public int IdReference { get; set; } [ForeignKey("IdReference ")] public virtual Reference ReferenceObj { get; set; } } 

在此示例中,仅映射IdReference属性并将ReferenceObj属性设置为IdReference,使用您在加载此属性时必须指定的虚拟修饰符,为此,在查询中使用.Include(“ReferenceObj”)(示例dbContext .Examples.Where(x => x.Id> 0).Include(“ReferenceObj”)。这可以适用于您的情况,因为只映射了IdReference属性