我正在编写测试用例以确保我的服务/存储库层按预期工作。我正在调用ISession.Save
和一个已经在一个单独的事务中持久保存到数据库的实体。我希望Save
抛出一个异常,因为该实体不是新的。而是将新条目添加到数据库中,并更新实体的ID。
第一个问题:这是预期的吗?据我所知,它应该抛出异常,但我无法在NHibernate documentation中明确地找到它。
一些代码:
public class Dashboard
{
public int ID { get; set; }
}
// Dashboard.hbm.xml:
<class name="Dashboard" table="Dashboard" lazy="false">
<id name="ID" column="ID">
<generator class="identity" />
</id>
</class>
Dashboard dashboard = new Dashboard();
using(var transaction = Session.BeginTransaction())
{
Session.Save(dashboard);
transaction.Commit();
}
Session.Flush();
using(var transaction = Session.BeginTransaction())
{
Session.Save(dashboard);
transaction.Commit();
}
我的理解是上面的代码应该抛出异常。这是对的吗?
答案 0 :(得分:0)
我已经选择通过自己抛出异常来手动处理此事。
类似的东西:
public void Save(T entity)
{
if (entity.ID != 0)
throw new InvalidOperationException("Attempted to save an entity which has already been saved.");
Session.Save(entity);
}