提交求职目标列表时出错

本文关键字:出错 列表 目标 提交 | 更新日期: 2023-09-27 17:49:15

当我从MVC 5中的列表中提交对象时,我得到了这个错误,它总是发生在列表的第二项

我用这个来调用数据库方法;

foreach (var modulo in _Modulos)
{
    USERS_MODULO _modulo = new USERS_MODULO();
    _modulo = modulo;
    _modulo.USUARIO = usuario;
    _PermissoesLinxDB.SalvaModulosUser(_modulo);
    _modulo = null; 
}

第86行:{第87行:DBRetaguardDataContextdbRetaguard = new DBRetaguardDataContext();88行:
dbRetaguard.USERS_MODULOs.InsertOnSubmit(模);89行:
try第90行:{

源文件:c: ' SOURCESAFE ' Projetos ' EMS还' EMS.Dados ' ' PermissoesLinxDB.cs
第88行

堆栈跟踪:

[NotSupportedException: An attempt has been to Attach or Add An .不是新的实体,可能是从另一个实体加载的DataContext。这是不支持的[br>System.Data.Linq.StandardChangeTracker。跟踪(MetaType mt, Object obj,词典2 visited, Boolean recurse, Int32 level) +891018
System.Data.Linq.StandardChangeTracker.Track(Object obj, Boolean recurse) +83 System.Data.Linq.StandardChangeTracker.Track(Object obj) +12 System.Data.Linq.Table
InsertOnSubmit (TEntity实体)+ 172

提交求职目标列表时出错

问题是_modulomodulo是同一个对象。两个变量引用同一个对象。

您现在对_modulo = modulo;所做的不是将modulo复制到新对象,而是将_modulo的引用设置为modulo内存中的完全相同的点。引用是相等的。

然后,当你调用_PermissoesLinxDB.SalvaModulosUser(_modulo);时,它实际上是试图保存(?)已经存在的对象,modulo并抛出异常,因为它已经存在。

我认为你打算做的是像下面这样的事情:1)创建一个新对象,2)将另一个对象的内部值赋给它,最后3)保存新对象:

USERS_MODULO _modulo = new USERS_MODULO();
// assign each property from the old object to this brand new object
_modulo.PropertyA = modulo.PropertyA; // obviously, substitute your property names
_modulo.PropertyB = modulo.PropertyB;
_modulo.PropertyC = modulo.PropertyC;
// etc..