CodeGo.net>如何在流利的nHibernate中指定列类型?
作者:互联网
我有一个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的columnt类型成为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 =>长度(10000).现在,在数据库中,“文本”的列类型将为nvarchar(MAX).
希望它能对其他人有所帮助.
标签:nhibernate,c,fluent-nhibernate 来源: https://codeday.me/bug/20191210/2099454.html