2011-06-23 68 views
1

各地的網絡搜索後,我發現了一個映射,它得到的大部分工作完成:流利nhibernate地圖IDictionary <int, string>?

在我的課,我有:

public virtual IDictionary<int, string> _properties { get; set; } 

而在映射:

HasMany(x => x._properties) 
    .AsMap<string>(index => index.Column("PropertyID").Type<int>(), 
        element => element.Column("Value").Type<string>()) 
        .KeyColumn("ID") 
        .ForeignKeyConstraintName("FK_DeftoProperties") 
        .Table("Definition_Property") 
        .Not.LazyLoad() 
        .Access.Property() 
       .Cascade.All(); 

導致在此表中定義:

create table Definition_Property (
     ID UNIQUEIDENTIFIER not null, 
     Value NVARCHAR(255) null, 
     PropertyID INT not null, 
     primary key (ID, PropertyID) 
    ) 

但是我需要將「Value」設置爲255,並將映射更改爲:

element => element.Column("Value").Type<string>().Length(500) 

對錶生成沒有任何影響。

如果我將其使用HBM文件映射:

我得到我預期的表。

有關如何流利設置長度的任何想法?

回答

0
...Element("Value", x => x.Length(300))... 
+0

這不這樣做,我改變了我的代碼:'的hasMany(X => x._properties).AsMap( 「物業ID」).Element( 「值」,X => x.Length( 400)).EntityName(「PropertyID」).KeyColumn(「ID」).ForeignKeyConstraintName(「FK_DeftoProperties」).Table(「Definition_Property」).Not.LazyLoad().Cascade.All(); '它仍然會生成值爲NVARCHAR(255) – Mike

+0

的表格,然後在此處發佈它。我正在使用FHN V 1.2.0.721 [(+)](http://teamcity.codebetter.com/viewType.html?buildTypeId=bt295&tab=buildTypeStatusDiv)。 – VahidN

+0

嗯。這是我使用的相同版本。我甚至將字段名稱更改爲Valuezzz,以確保它在創建表格時使用映射。這可能與我的設置有關。 – Mike