其他分享
首页 > 其他分享> > CodeGo.net>如何在流利的nHibernate中指定列类型?

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