2010-12-04 55 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的角度來考慮它:如果你有一個類Dog的對象繼承自Animal,那麼「刪除狗,但留下動物」是否有意義?

這使我下一個問題:如果你可以將對象的刪除「的一部分」,那麼你應該使用的子類,但一個協會(可能是一個一對一或多對一的一個)

+0

感謝迭戈,我知道是這樣,我只是希望我不對。 – 2010-12-04 17:10:01