提交求职目标列表时出错
本文关键字:出错 列表 目标 提交 | 更新日期: 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
InsertOnSubmit (TEntity实体)+ 172
System.Data.Linq.StandardChangeTracker.Track(Object obj, Boolean recurse) +83 System.Data.Linq.StandardChangeTracker.Track(Object obj) +12 System.Data.Linq.Table
问题是_modulo
和modulo
是同一个对象。两个变量引用同一个对象。
您现在对_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..