2011-04-18 52 views
1

我認爲這將是非常簡單的,但它比我預期的更令人沮喪。流利的nHibernate,反向One-One屬性

鑑於類似這樣的結構...

class Template { 
    public virtual int Id { get; set; } 
    public virtual Attached Attached { get; set; } 
} 

class Attached { 
public virtual int Id { get; set; } 
public virtual Template Template { get; set; } 
} 

我想表結構,看起來像這樣。

表 - 模板

標識

表 - 連接

標識 - TemplateId

所以我建立了我的映射......

class TemplateMap : ClassMap<Template> { 
    TemplateMap(){ 
    HasOne(x => x.Attached).Cascade.All(); 
    Table("Templates"); 
    } 
} 
class AttachedMap : ClassMap<Attached> { 
    AttachedMap(){ 
    References(x => x.Template).Cascade.All().Column("TemplateId"); 
    Table("Attached"); 
    } 
} 

然後創建一個新模板

var tmpl = new Template { 
    Attached = new Attached { 
    // ... 
    } 
}; 

session.SaveOrUpdate(tmpl); 
transaction.Commit(); 

但是我的TemplateIdAttached表中仍然出現NULL。有任何想法嗎?

回答

1

我認爲這裏的關係的雙方都需要是一對一的。你也需要在關係的一邊指定id是由外部生成的。

閱讀下面的兩篇文章,如果你需要更多的細節:
link1
link2

編輯:
這是在良好的例子就是我講的也是他們談論什麼在鏈接1:
Fluent Example

+0

對不起,這些鏈接並沒有真正的幫助很大。 – Ciel 2011-04-18 20:51:00

+0

看看我剛​​剛發佈的最後一個鏈接。這是一個流利的例子,所以你應該能夠看到我正在談論的內容以及他們在鏈接中提到的一般想法 – 2011-04-18 21:10:40

+0

謝謝。看來,我想要做的事情太難以任何簡單的方式完成。到現在爲止你會認爲這種事對於nHibernate來說是非常基本的。 – Ciel 2011-04-20 13:26:19

相關問題