在实体框架中使用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中发生,但未在用户代码中处理
附加信息:更新条目时发生错误。详情请参阅内部异常。
我猜你需要把var tb = new Entities.Db.Seat();
在循环内部。因为目前您正在尝试将相同的对象添加到db.Seats
,但每次都更改其SalonId属性。这可不妙