0

尝试将“实体”添加到站点时出现此错误。

“一个实体对象不能被多个 IEntityChangeTracker 实例引用”

站点和“实体”之间的关系是一对多的。

我的模型如下所示:

地点:

public class Site : Model
{
 // The collection of Entities belonging to this site
 public virtual ICollection<Entity> Entities { get; set; }
}

实体:

public class Entity : Model
{
 public string Label { get; set; }
 public string Name { get; set; }
 public virtual Site Site { get; set; }
}

我在控制器中的代码:

[HttpPost]
public ActionResult Add(EntityModel _entityModel)
{
  var model = _entityModel.ToEntity();
  if (ModelState.IsValid)
  {
    model.Site = _siteRepository.Find(1);
    model.Label = model.Name.Replace(' ','_').ToLower();
    _entityRepository.Add(model);
  }

   return RedirectToAction("Index");
} 

EFEntityRepository.cs 中的代码:

public void Add(Entity entity)
{
  DateTime dateModified = DateTime.Now;
  entity.CreatedOn = dateModified;
  entity.LastUpdatedOn = dateModified;
  this._context.Entities.Add(entity);
  this._context.SaveChanges();
 }

请提出解决方案。

4

1 回答 1

0

听起来好像在某个地方有多个 Context 类持有对该对象的引用,可能是按键。确保您的上下文在每个请求之后被释放,此外,没有其他操作导致另一个上下文实例保留该实体。

于 2012-05-18T17:33:34.993 回答