如何在流畅的nHibernate中指定Columntype?

我有一个CaptionItem

 public class CaptionItem { public virtual int SystemId { get; set; } public virtual int Version { get; set; } protected internal virtual IDictionary CaptionValues {get; private set;} } 

我正在使用以下代码进行nHibernate映射

 Id(x => x.SystemId); Version(x => x.Version); Cache.ReadWrite().IncludeAll(); HasMany(x => x.CaptionValues) .KeyColumn("CaptionItem_Id") .AsMap(idx => idx.Column("CaptionSet_Name"), elem => elem.Column("Text")) .Not.LazyLoad() .Cascade.Delete() .Table("CaptionValue") .Cache.ReadWrite().IncludeAll(); 

所以在数据库中创建了两个表。 一个CaptionValue和其他CaptionItem 。 在CaptionItem表中有三列

 1. CaptionItem_Id int 2. Text nvarchar(255) 3. CaptionSet_Name nvarchar(255) 

现在,我的问题是如何将columnt类型的Textnvarchar(max)

提前致谢。

我尝试了很多东西,但没有解决问题。 最终我解决了它。 我只是改变了映射代码中的一点。 新的映射代码如下

 Id(x => x.SystemId); Version(x => x.Version); Cache.ReadWrite().IncludeAll(); HasMany(x => x.CaptionValues) .KeyColumn("CaptionItem_Id") .AsMap(idx => idx.Column("CaptionSet_Name"), elem => elem.Columns.Add("Text", c => c.Length(10000))) .Not.LazyLoad() .Cascade.Delete() .Table("CaptionValue") .Cache.ReadWrite().IncludeAll(); 

所以我刚刚添加了c => c.Length(10000) 。 现在,在数据库中, Text的columntype将为nvarchar(MAX)

希望它能帮助别人。

您可以使用以下方法执行此操作:

 Id(x => x.Text).CustomSqlType("nvarchar(max)"); // For older versions of Fluent NHibernate Id(x => x.Text).CustomSqlTypeIs("nvarchar(max)"); 

编辑:

Bipul,为什么不为CaptionValues创建一个映射,并在该映射中指定, Text的类型是nvarchar(max)?