私はNHibernateのマッピングを経てこれを行う方法を知らない、あなたはおそらくレコード数をカウントし、あなたの削除顧客のロジックにいくつかのロジックを記述する必要があります顧客識別子が削除されていない企業識別子を持つ顧客テーブルで、結果の数が0の場合は、顧客と企業を削除します。
psudoコード:
また
public void Delete(Customer customer)
{
using (var transaction = session.BeginTransaction())
{
int remainingCustomers =
session.Query<Customer>(c => c.CompanyId == customer.CompanyId && c.CustomerId != customer.CustomerId).Count();
session.Delete(customer);
if (remainingCustomers == 0)
{
session.Delete(customer.Company);
}
transaction.Commit();
}
}
削除は瞬時に発生する必要がない場合、あなたは「整頓」の古い企業へのスケジュールでストアドプロシージャを実行することができます。
@Andy:さらに、「会社」には、たとえば「建物」のような他のリンクがある可能性があります。 「会社」を削除する場合は、手動でリンクを解除する必要があります。 –