我在使用NHibernate在數據庫中插入新記錄時遇到以下錯誤。如何解決批量更新在NHibernate中返回意外的行計數錯誤?
{"Batch update returned unexpected row count from update; actual row count: 0; expected: 1"}
我有一次和外國關係的兩個表。我想在這兩個表中的插圖中的記錄:這裏是映射類
DemoStudentMap.cs
public DemoStudentMap() {
Table("DEMO_Student");
Id(t => t.StudentId).Column("StudentId").GeneratedBy.Identity();
Map(t => t.Name, "Name");
Map(t => t.Class, "Class");
Map(t => t.Board, "Board");
Map(t => t.Enabled, "Enabled");
Map(t => t.Isdeleted).Column("IsDeleted");
Map(t => t.Createddate).Column("CreatedDate");
Map(t => t.Lastmodifyby).Column("LastModifyBy").Nullable();
Map(t => t.Lastmodifieddate).Column("LastModifiedDate").Nullable();
References(x => x.DemoScore).ForeignKey("RollNumber");
}
DemoScoreMap.cs
public DemoScoreMap() {
Table("DEMO_Score");
Id(t => t.rollnumber).Column("RollNumber");
Map(t => t.math, "Math");
Map(t => t.physics, "Physics");
Map(t => t.english, "English");
Map(t => t.enabled, "Enabled");
Map(t => t.isdeleted).Column("IsDeleted");
Map(t => t.createddate).Column("CreatedDate");
Map(t => t.lastmodifyby).Column("LastModifyBy").Nullable();
Map(t => t.lastmodifieddate).Column("LastModifiedDate").Nullable();
}
我使用Asp.net的WebAPI。在Api控制器的Post方法中,我檢索了要插入的值。這裏是我的ApiController:
DemoScoreViewModel newScore = new DemoScoreViewModel();
DemoScore score = newScore.ConvertDemoScoreViewModelToDemoS(newStudent, _crudStatusCreate);
bool resultScore = _demoScoreTask.Create(score);
DemoStudent student = newStudent.ConvertDemoStudentViewModelToDemoStudent(newStudent, score, _crudStatusCreate);
bool result = _demoStudentTask.Create(student);
在這裏,我得到了我想要在數據庫中保存的「分數」和「學生」變量的值。我有以下創建新記錄的方法,它返回代碼中顯示的布爾結果。
但是,在保存數據時,我得到了上述錯誤。這是我插入的代碼。得分和學生都有同樣的錯誤。這裏是我的代碼創建:
對於學生:
public bool Create(DemoStudent newStudent)
{
try
{
_demoStudentRepo.DbContext.BeginTransaction();
_demoStudentRepo.SaveOrUpdate(newStudent);
_demoStudentRepo.DbContext.CommitTransaction();
}
catch
{
return false;
}
return true;
}
富勒分數
public bool Create(DemoScore newScore)
{
try
{
_demoScoreRepo.DbContext.BeginTransaction();
_demoScoreRepo.SaveOrUpdate(newScore);
_demoScoreRepo.DbContext.CommitTransaction();
}
catch
{
return false;
}
return true;
}
注:當我刪除事務我不得到這個錯誤,但仍然是我的數據不會保存。
你有沒有嘗試過這裏的建議:http://stackoverflow.com/questions/4083368/how-to-solve-batch-update-returned-unexpected-row-count-from-update-actual-row?rq = 1 – Tallmaris