C# ListView不保存已编辑的记录

C# ListView不保存已编辑的记录,c#,asp.net,listview,C#,Asp.net,Listview,我使用ASP.net 4.5 ListView,使用数据实体填充控件 当我使用下面的C代码编辑记录时,它不会保存更改。代码编译时没有任何错误,如果我单步执行代码,它会提取我正在编辑的记录,但不会保存更改。代码如下: public void ListView1_UpdateItem(int LinkAnalysisID) { LinkAnalysis.LinkAnalysi item = null; using (LAEntities db = ne

我使用ASP.net 4.5 ListView,使用数据实体填充控件 当我使用下面的C代码编辑记录时,它不会保存更改。代码编译时没有任何错误,如果我单步执行代码,它会提取我正在编辑的记录,但不会保存更改。代码如下:

    public void ListView1_UpdateItem(int LinkAnalysisID)
    {
        LinkAnalysis.LinkAnalysi item = null;
        using (LAEntities db = new LAEntities())
        {
            // Load the item here, e.g. item = MyDataLayer.Find(id);
            item = db.LinkAnalysis.SingleOrDefault(uu => uu.LinkAnalysisId == LinkAnalysisID);

        if (item == null)
        {
            // The item wasn't found
            ModelState.AddModelError("", String.Format("Item with id {0} was not found", LinkAnalysisID));
            return;
        }
        TryUpdateModel(item);
        if (ModelState.IsValid)
        {
            // Save changes here, e.g. MyDataLayer.SaveChanges();
            db.SaveChanges();
        }
        }
    }
任何帮助都将不胜感激

经过进一步研究,我已经将代码编辑成如下所示

     public void ListView1_UpdateItem(int LinkAnalysisID)
    {
        LinkAnalysis.LinkAnalysi item = null;
        using (LAEntities db = new LAEntities())
        {
            // Load the item here, e.g. item = MyDataLayer.Find(id);
            item = db.LinkAnalysis.Find(LinkAnalysisID);
            //item = db.LinkAnalysis.SingleOrDefault(uu => uu.LinkAnalysisId == LinkAnalysisID);

        if (item == null)
        {
            // The item wasn't found
            ModelState.AddModelError("", String.Format("Item with id {0} was not found", LinkAnalysisID));
            return;
        }
        TryUpdateModel(item);
        if (ModelState.IsValid)
        {
            // Save changes here, e.g. MyDataLayer.SaveChanges();
            db.SaveChanges();
        }
        }
    }

我仍然会得到与代码运行时相同的结果,但更改不会保存到数据库中

TryUpdateModel(项目)此方法是否实际添加了任何内容。。我看不到您正在执行的任何操作
db.SomeEntity.Add
method在TryUpdateModel上设置断点。执行它并检查您的EntityState是否显示已更改。此外,检查它是否通过ModelState.IsValid。如果两种情况都没有发生,您将看不到更新。并且假设您在页面上更改了某些内容,那么它将发布一个更改。这是更新成功的第三个要求。感谢您的回复方法。假设该方法可以编辑记录。该方法执行,我可以查看数据,ModelState验证为true。对记录的更改不会写入数据库。有趣的情况我正在尝试在Listview中使用这段代码,如果我在Gridview中使用这段代码,同样的代码也可以很好地工作。Dacker也感谢您的评论。我已经设置了断点并循环通过ModelSate检查为有效的代码。