2010-12-04 17 views
0

私は関連ごとにサブクラスごとのテーブルを使用している状況があります。サブクラステーブルからレコードを削除しようとするまで、マッピングは正常です。削除原因は、削除されるサブクラスだけでなく、親も削除されます。私はこの機能が設計上であるかもしれないと理解できますが、とにかくサブクラスを削除するだけですか?サブクラスを削除すると、親も削除されます。

ここに私のサンプルコードです。私は、レコードを照会するとき


public class ParentClassMap : ClassMap<Parent> 
{ 
    public ParentClassMap() 
    { 
     Table("tblParent"); 
     Id(x => x.ParentId).Column("ParentId").GeneratedBy.Identity() 
     ... other properties 
    } 
} 

public class ChildClassMap : SubClassMap<Child> 
{ 
    public ChildClassMap() 
    { 
     Table("tblChild"); 
     KeyColumn("ParentId"); 
     ... other properties 
    } 
} 

は今、すべてが


Child child = session.CreateCriteria<Parent>().Add(Restrictions.Eq("ParentId", 1)).UniqueResult<Parent>(); 

細かいようだが、私は子供を削除すると、実行されたSQLは、その後、削除を親または子のいずれかを参照するすべてのテーブルの更新が含まれてい子供と親の


session.Delete(child); 

私はこの子オブジェクトを削除したいだけですか?

答えて

4

いいえ、不可能です。

OOP用語で考えてみましょう:Animalを継承するクラスDogのオブジェクトがある場合は、「犬を削除しても、動物を残すのは理にかなっていますか?

これは次の点です:オブジェクトの「部分」を削除できる場合、ではなく、サブクラスを使用している必要がありますが、アソシエーション(おそらく1対1または多対1 )

+0

ありがとうございますDiego、私はちょっとそれが事実であることを知っていた、私はちょうど私が正しくないことを望んでいた。 –

関連する問題