NHibernate中通过id删除对象的最佳做法是什么。你可以做到这两点
public void Delete(int id)
{
Session.Delete(new MyEntity { Id = id });
}
或者你可以做到
public void Delete(int id)
{
var entity = Session.Get<MyEntity>(id);
Session.Delete(entity);
}
第二个选项对我来说感觉更干净,因为你不是为了删除而只编写一个新对象,而另一方面你执行两个SQL命令,而不是一个。
答案 0 :(得分:2)
第二种选择是最佳做法。 NHibernate需要在删除对象之前加载它,以便它通过对象图级联删除。我宁愿做一个直接的SQL删除,而不是像第一个选项那样创建一个伪造NHibernate的虚假对象。