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文件映射:
我得到我预期的表。
有关如何流利设置长度的任何想法?
这不这样做,我改变了我的代码:'的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
的表格,然后在此处发布它。我正在使用FHN V 1.2.0.721 [(+)](http://teamcity.codebetter.com/viewType.html?buildTypeId=bt295&tab=buildTypeStatusDiv)。 – VahidN
嗯。这是我使用的相同版本。我甚至将字段名称更改为Valuezzz,以确保它在创建表格时使用映射。这可能与我的设置有关。 – Mike