2011-06-23 42 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