c# - 如何在 fluent nHibernate 中指定 Columntype?

标签 c# nhibernate fluent-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 的列类型转换为 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/

相关文章:

nhibernate - 如何确保使用 MassTransit Saga 将项目添加到 NHibernate 持久化 IList 的良好性能

c# - asp.net查询c#错误

c# - 正则表达式来替换之前没有特定单词的单词

nhibernate - 如何判断一个引用的对象是否可以删除?

.net - NHibernate开源POC

c# - 如何在 nhibernate 中急切地加载子集合

c# - 检查 single() LINQ 是否返回 NULL

c# - 为什么 Microsoft 的这段示例代码会崩溃?

nhibernate - Linq to NHibernate - 订购匿名类型

c# - NHibernate尝试为FK映射插入现有记录,但仅当int ID为0时