簡體   English   中英

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

[英]How to Specify Columntype in 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)

現在,我的問題是如何將columnt類型的Textnvarchar(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的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)?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM