1

在删除一个表后立即在表中添加新行时,我收到这样的错误:“批量更新从更新返回了意外的行数;实际行数:%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)]

你能告诉我该怎么做吗?也许我应该以某种方式更新行数?

4

0 回答 0