2011-03-19 143 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()调用指定键列名称。