C# EntityFramework保存行为奇怪的更改

C# EntityFramework保存行为奇怪的更改,c#,entity-framework,asp.net-mvc-3,C#,Entity Framework,Asp.net Mvc 3,我有一个奇怪的问题,让我描述一下情况: 我正在为数据库使用MVC3 w/C和entityframework 我有一个更新页面(针对事件),其中有许多可选字段,但是如果您之前已经完成了信息,这些字段不再是可选的,您可以更改它们 这段代码可以工作,它显示了我想要的错误,但是当我用空数据和正确的数据填写表单几次时,所有“错误”条目似乎都堆积起来了,并且在一个事务中都添加到了数据库中 我怀疑是SaveChanges() 我的代码: [HttpPost] public ActionResult U

我有一个奇怪的问题,让我描述一下情况:

我正在为数据库使用MVC3 w/C和entityframework

我有一个更新页面(针对事件),其中有许多可选字段,但是如果您之前已经完成了信息,这些字段不再是可选的,您可以更改它们

这段代码可以工作,它显示了我想要的错误,但是当我用空数据和正确的数据填写表单几次时,所有“错误”条目似乎都堆积起来了,并且在一个事务中都添加到了数据库中

我怀疑是SaveChanges()

我的代码:

[HttpPost]
    public ActionResult Update(int id, HttpPostedFileBase logoupload, Event @event) {
        try {
            ...
            var originalEvent = _eventMapper.GetEventById(id);

            @event.naam = originalEvent.naam;
            @event.beginDatum = originalEvent.eindDatum;
            @event.omschrijving = originalEvent.omschrijving;
            @event.sportID = originalEvent.sportID;
            @event.Sport = originalEvent.Sport;
            @event.organisatorID = originalEvent.organisatorID;
            @event.code = originalEvent.code;
            @event.Organizer = originalEvent.Organizer;

            var firstTime = true;

            if(originalEvent.HasCompleteData())
            {
                firstTime = false;
                if(!@event.HasCompleteData())
                {
                    ViewBag.IncompleteError = "You can't omit values that were previously filled in.";
                    return View(@event);
                }   
            }

    TryUpdateModel(originalEvent);
            Db.SaveChanges();

            if (@event.HasCompleteData() && firstTime) {
                Mailer.SendOrganiserUpdatedData(@event);
            }

            return RedirectToAction("Index");
        } catch {
            return View(@event);
        }

这里缺少什么?

DbContext的生存期是多少?它是什么时候创建或处理的?它是一个单例,这是一个可能的错误,我会研究它。太好了,这就是问题所在!谢谢!