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

时间:2015-10-05 08:32:43

标签: c# entity-framework

我编写了现在使用EF模型的代码我想将som条目添加到我的表中,如下所示:

 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();)。 例外是:

  

类型&#39; System.Data.Entity.Infrastructure.DbUpdateException&#39;的例外情况发生在EntityFramework.dll中但未在用户代码中处理

     

其他信息:更新条目时发生错误。有关详细信息,请参阅内部异常。

1 个答案:

答案 0 :(得分:0)

我猜你需要放var tb = new Entities.Db.Seat(); 循环内部。因为当前您尝试将同一对象添加到db.Seats,但每次都更改其SalonId属性。那不好