【发布时间】:2018-02-09 16:44:12
【问题描述】:
我正在向数据库中插入一些对象,但出现以下错误:
“System.InvalidOperationException”类型的异常发生在 System.Data.Entity.dll 但未在用户代码中处理
附加信息:实体对象不能被 IEntityChangeTracker 的多个实例。
我已尝试研究并找到问题,但找不到解决和理解问题的正确方法。任何帮助表示赞赏。
这是导致错误的小源部分:
SysUsers User = GetUser()
foreach (int country in data.countries) {
foreach (int street in data.streets)
{
BrowsedData tempBrowsed = new BrowsedData();
MapInfo tempInformation = WorldInformationController.FindInformation(country, street);
tempBrowsed.Information = tempInformation;
tempBrowsed.User = User;
tempBrowsed.UpdatedBy = User;
tempBrowsed.sDateTime = data.IndividualFiscalYearEnds
.Where(a => a.C_ID == country)
.Select(a => a.LastDate).FirstOrDefault();
this.Database.BrowsedData.Add(tempBrowsed);
this.Database.SaveChanges();
}
}
错误表示这一行:this.Database.BrowsedData.Add(tempBrowsed);
【问题讨论】:
-
试试
tempBrowser.sDateTime = DateTime.Parse(data.IndividualFiscalYearEnds.Where(a => a.C_ID == country).Select(a => a.LastDate).FirstOrDefault()?.ToString()) -
据我所知“?”不能应用于 DateTIme。
-
是的,你是对的,除非它可以为空
DateTime? -
看起来像 tempBrowsed.Information = tempInformation;是问题所在,它可能在不同的上下文中,您可以分配 id 来代替
-
你的 DbContext 管理是什么样的?如果您使用 mvc,您是在 BeginRequest 处创建一次上下文并将其传递给所有控制器,还是使用 IoC 容器在 Web 请求范围内对其进行实例化?
标签: c# asp.net asp.net-mvc entity-framework