[英]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類型的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
的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.