微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 流利的nHibernate自动绘制属性为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
    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐