C# nhibernate使用\u标识符\u回滚所有删除孤立项
NH中有一个配置设置“use_identifier_rollback”,它将实体的id设置回其默认值 此设置适用于除“删除孤立项”之外的所有级联选项。(我知道为什么!) 看看 看看 回滚保存时还原id是否是错误的做法? 在java代码中,注释是不正确的 更新: 删除实体时通常会出现什么行为C# nhibernate使用\u标识符\u回滚所有删除孤立项,c#,nhibernate,entity,identity,rollback,C#,Nhibernate,Entity,Identity,Rollback,NH中有一个配置设置“use_identifier_rollback”,它将实体的id设置回其默认值 此设置适用于除“删除孤立项”之外的所有级联选项。(我知道为什么!) 看看 看看 回滚保存时还原id是否是错误的做法? 在java代码中,注释是不正确的 更新: 删除实体时通常会出现什么行为 // Works with 'use_identifier_rollback' and 'cascade-option=all' // but not with 'cascade-option=all-de
// Works with 'use_identifier_rollback' and 'cascade-option=all'
// but not with 'cascade-option=all-delete-orphan'
int sampleId; // sampleId from above
using(var session = sessionFactoy.OpenSession())
{
using(var tx = session.BeginTransaction())
{
Sample sample = session.Get<Sample>(sampleId);
Assert.That(sampleId, Is.GreaterThan(0));
Assert.False(sample.IsTransient)
session.Delete(sample);
tx.Commit();
}
}
Assert.That(sample.Id, Is.EqualTo(0));
Assert.True(sample.IsTransient)
//与“使用标识符\u回滚”和“级联选项=全部”一起使用
//但不能使用“级联选项=全部删除孤立项”
int sampleId;//上面的样本
使用(var session=sessionFactoy.OpenSession())
{
使用(var tx=session.BeginTransaction())
{
Sample=session.Get(sampleId);
Assert.That(sampleId,比(0)大);
Assert.False(sample.IsTransient)
删除(样本);
tx.Commit();
}
}
Assert.That(sample.Id,Is.EqualTo(0));
Assert.True(sample.IsTransient)
通过“use\u identifier\u rollback”
,nhibernate将id设置为“0”或更准确地设置为标识的默认值。我的IsTransient
属性取决于Id==0
- 当实体被删除时,您如何处理这些实体,以防实体是暂时的,或者被删除实体的Id是什么
// Works with 'use_identifier_rollback' and 'cascade-option=all'
// but not with 'cascade-option=all-delete-orphan'
int sampleId; // sampleId from above
using(var session = sessionFactoy.OpenSession())
{
using(var tx = session.BeginTransaction())
{
Sample sample = session.Get<Sample>(sampleId);
Assert.That(sampleId, Is.GreaterThan(0));
Assert.False(sample.IsTransient)
session.Delete(sample);
tx.Commit();
}
}
Assert.That(sample.Id, Is.EqualTo(0));
Assert.True(sample.IsTransient)