gpt4 book ai didi

c# - Fluent nHibernate 自动映射属性为 nvarchar(max)

转载 作者:可可西里 更新时间:2023-11-01 08:52:14 26 4
gpt4 key购买 nike

使用流畅的 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)
}

最佳答案

使用自动映射,您可以覆盖文本字段的默认长度,但它将应用于所有文本字段。

您应该能够将自动映射与使用 Fluent 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
}

关于c# - Fluent nHibernate 自动映射属性为 nvarchar(max),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3532298/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com