2011-03-19 110 views
0

我遇到了流暢和參考鍵自動映射的問題。例子是:重複的參考鍵 - 流利的NHibernate自動映射

public class ConfigurationCategory 
{ 

    public virtual Guid Id { get; private set; } 

    [NotNull] 
    public virtual String Name { get; set; } 
    public virtual String Description { get; set; } 
    public virtual String Icon { get; set; }  

    public virtual ConfigurationCategory Parent { get; set; } 

    public virtual IList<ConfigurationCategory> Children { get; private set; } 

    public ConfigurationCategory() 
    { 
     Children = new List<ConfigurationCategory>(); 

    } 
} 

結果在下面的SQL-輸出:

CREATE TABLE "ConfigurationCategory" 
    ... 
    parent_id uuid, 

    configurationcategory_id uuid, 

    CONSTRAINT "ConfigurationCategory_pkey" PRIMARY KEY (id), 

    CONSTRAINT fk6ccc850055890dc8 FOREIGN KEY (configurationcategory_id) 
     REFERENCES "ConfigurationCategory" (id) MATCH SIMPLE 
     ON UPDATE NO ACTION ON DELETE NO ACTION, 

    CONSTRAINT fk6ccc8500ee71b726 FOREIGN KEY (parent_id) 
     REFERENCES "ConfigurationCategory" (id) MATCH SIMPLE 
     ON UPDATE NO ACTION ON DELETE NO ACTION 

爲什麼ConfigurationCategory複製?

回答

1

我沒有使用流暢的自動映射,但我猜想它是由事實,你有父母和孩子屬性混淆;我猜想流利不能說它們都是由數據庫中的同一列來處理的。

您可能需要創建一個ClassMap併爲References()和HasMany()調用指定鍵列名稱。