我有一个类 CaptionItem
public class CaptionItem
{
public virtual int SystemId { get; set; }
public virtual int Version { get; set; }
protected internal virtual IDictionary<string, string> CaptionValues {get; private set;}
}
我正在使用以下代码进行 nHibernate 映射
Id(x => x.SystemId);
Version(x => x.Version);
Cache.ReadWrite().IncludeAll();
HasMany(x => x.CaptionValues)
.KeyColumn("CaptionItem_Id")
.AsMap<string>(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)
现在,我的问题是如何将 Text
的列类型转换为 nvarchar(max)
?
提前致谢。
最佳答案
我尝试了很多方法,但都没有解决问题。最终我解决了它。我只是在映射代码中做了一点改动。下面给出新的映射代码
Id(x => x.SystemId);
Version(x => x.Version);
Cache.ReadWrite().IncludeAll();
HasMany(x => x.CaptionValues)
.KeyColumn("CaptionItem_Id")
.AsMap<string>(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
的列类型将为 nvarchar(MAX)
。
希望它能帮助其他人。
关于c# - 如何在 fluent nHibernate 中指定 Columntype?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2645024/