在删除一个表后立即在表中添加新行时,我收到这样的错误:“批量更新从更新返回了意外的行数;实际行数:%x;预期:%(x+1)”,其中 x - 是删除后插入前的行数。
删除代码:
using (var session = factory.OpenSession())
{
using (var transaction = session.BeginTransaction())
{
foreach (var row in rows)
{
session.Delete((Word)row.DataBoundItem);
}
transaction.Commit();
session.Flush();
}
}
添加代码:
using (var session = factory.OpenSession())
{
using (var transaction = session.BeginTransaction())
{
language.AddWord(word);
session.SaveOrUpdate(language);
transaction.Commit();
session.Flush();
}
}
映射:
public WordMapping()
{
Id(x => x.Id).GeneratedBy.Native();
Map(x => x.Word1);
Map(x => x.Word2);
Map(x => x.Count);
References(x => x.Language)
.Not.LazyLoad();
}
为调试而编写的 SQL 代码:
NHibernate: INSERT INTO [Word] (Word1, Word2, Count, Language_id)
VALUES (@p0, @p1, @p2, @p3);
select SCOPE_IDENTITY();
@p0 = 't2' [Type: String (4000)],
@p1 = 't2' [Type: String (4000)],
@p2 = 10 [Type: Int32 (0)],
@p3 = 1 [Type: Int32 (0)]
你能告诉我该怎么做吗?也许我应该以某种方式更新行数?