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 命令,而不是一个。
第二个选项是最佳做法。NHibernate需要在删除对象之前加载对象,以便它通过对象图级联删除。我宁愿直接进行SQL删除,也不愿创建一个虚假的对象来欺骗NHibernate,就像第一个选项一样。