簡體   English   中英

流暢的nHibernate自動化屬性為nvarchar(max)

[英]Fluent nHibernate automapping property as nvarchar(max)

使用流暢的nhibernate和自動化(nhibernate創建我的數據庫模式),我怎樣才能獲得nhibernate在數據庫中基於以下類創建一個nvarchar(max)列

public class VirtualPage : BaseEntity
{
    public virtual int ParentId { get; set; }
    public virtual string PageName { get; set; }
    public virtual string Title { get; set; }
    public virtual string Body { get; set; }
    public virtual string ViewName { get; set; }
    public virtual string ViewData { get; set; } // this must be nvarchar(max)
}

使用自動化,您可以覆蓋文本字段的默認長度,但它將應用於所有文本字段。

您應該能夠將自動化與使用流暢API創建的顯式映射相結合。

幸運的是,這是一個非常簡單的映射類(我假設這是每子類表層次結構的一部分,這就是為什么我使用SubClassMap<>而不是ClassMap<>而不映射標識符):

public class VirtualPageMap : SubClassMap<VirtualPage>
{
    public VirtualPageMap()
    {
        Map(x => x.ParentId);
        Map(x => x.PageName);
        Map(x => x.Title);
        Map(x => x.Body);
        Map(x => x.ViewName);
        Map(x => x.ViewData).Length(4001); // anything over 4000 is nvarchar(max)
    }
}

我實際上從未使用過自動裝置,所以我假設它會被正確拾取,但不確定。

不要忘記在配置中添加映​​射。

Fluently.configure(
    // blah blah blah
    .Mappings(m => 
    {
        m.FluentMappings.AddFromAssemblyOf<VirtualPage>();
        m.AutoMappings.Add( // blah blah blah
    }

將Length屬性設置為一個較大的數字(我使用10000) - 這將導致NHibernate生成一個nvarchar(max)

暫無
暫無

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

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