entityframework:UpdatingAffectedObjects我有一个包含多个信息和其他复杂对象的对象,例如当我调试我的对象时。其他对象包含数据。然后我用这一行更新它:_dbContext.Update(object);问题是在更新调用之后,我的object.otherObject失去了它的值并变成了null。尝试对同一对象(不同值)使用不同的操作(ui操作)时,我没有遇到这个问题。根据我对EF更新的理解,它应该将对象标记为已修改但保持不变。编辑:我的映射文件是:internalclassObjectConfiguration:EntityTypeConfiguration{publicObjectConfiguration(){ToTable("TABLE_NAME",Properties.Settings.Default.DBSchema);HasKey(s=>s.Id);Property(s=>s.Id).HasColumnName("COLUMNNAME");编辑2:_dbContext是从EF5存储库和工作单元构建的自定义对象:https://docs.microsoft.com/fr-fr/aspnet/mvc/overview/older-versions/getting-started-with-ef-5-using-mvc-4/implementing-the-repository-and-unit-工作模式,在an-asp-net-mvc应用程序中是这样的:publicclassUserManager:IDisposable{privatereadonlyIRepository_dbContext;}publicinterfaceIRepository{TEntityUpdate(TEntityentity)whereTEntity:class;}编辑3:传递Attach函数时,对象实际上清空其值:publicTEntityUpdate(TEntityentity)whereTEntity:class{var条目=条目(实体);entry.State=System.Data.EntityState.Modified;}catch(Exceptione){}返回实体;我不知道你的映射是什么样子的,但你可以使用类似这个公共类示例的东西{//其他属性[Column("id_reference")publicintIdReference{get;放;}[ForeignKey("IdReference")]publicvirtualReferenceReferenceObj{get;放;在此示例中,仅映射了IdReference属性并将ReferenceObj属性设置为IdReference,使用加载此属性时必须指定的虚拟修饰符,为此在查询中使用.Include("ReferenceObj")(示例dbContext.Examples.Where(x=>x.Id>0).Include("ReferenceObj")这个可以适用于你的情况,因为只映射了IdReference属性关于C#学习教程,希望大家多多关注本文收集自网络,不代表立场,如涉及侵权,请点右联系管理员删除,如需转载请注明出处:
