在实体框架中使用SaveChanges()时出现异常

本文关键字:异常 SaveChanges 框架 实体 | 更新日期: 2023-09-27 18:15:56

我写的代码使用EF模型为基础,现在我想添加一些条目到我的表,如下所示:

 protected void cmdOk_Click(object sender, EventArgs eventArgs)
        {
                Validate();
                if (Page.IsValid)
                    using (var db = new KishModelContainer())
                    {
                        EditId = Request["Id"].ChangeType<int>(0);
                        if (EditId == 0)
                        {
                            var obj = new Entities.Db.Salon();
                            obj.Name = txtName.Text;
                            obj.Address = txtAddress.Text;
                            obj.Capacity = Convert.ToInt32(txtCapacity.Text);
                            obj.ServiceProviderId = txtProviderId.Text.ChangeType<int>(0);
                            db.Salons.Add(obj);
                            db.SaveChanges();
                            var tb = new Entities.Db.Seat();
                            for (int i = 1; i < Convert.ToUInt32(txtCapacity.Text);i++ )
                            {
                                tb.SalonId = obj.Id;
                                db.Seats.Add(tb);
                                db.SaveChanges();
                            }
                                DBUtils.AddOperationLog((CurrentUser)Session["currentUser"], "", "افزودن خدمت");
                            Message.Info("successful operaton ");
                            Response.Redirect("AbstractServices.aspx", false);

但是在FOR循环(line:db.SaveChanges();)中遇到异常。例外是:

类型为"System.Data.Entity.Infrastructure"的异常。DbUpdateException'在EntityFramework.dll中发生,但未在用户代码中处理

附加信息:更新条目时发生错误。详情请参阅内部异常。

在实体框架中使用SaveChanges()时出现异常

我猜你需要把var tb = new Entities.Db.Seat();在循环内部。因为目前您正在尝试将相同的对象添加到db.Seats,但每次都更改其SalonId属性。这可不妙