gpt4 book ai didi

c# - 覆盖长文本字符串的流利 NHibernate nvarchar(MAX) 而不是 nvarchar(255)

转载 作者:IT王子 更新时间:2023-10-29 03:57:32 36 4
gpt4 key购买 nike

当你在 fluent NHibernate 中设置一个字符串值时,它总是将 DB 值设置为 Nvarchar(255),我需要存储相当多的基于用户输入的长字符串,而 255 是不切实际的。

补充一下,这是自动映射器的一个问题,因为我正在使用流畅的 NHibernate 来构建数据库。

最佳答案

添加此约定会将字符串属性的默认长度设置为 10000。正如其他人所指出的,这将是一个 nvarchar(max) 列。

public class StringColumnLengthConvention : IPropertyConvention, IPropertyConventionAcceptance
{
public void Accept(IAcceptanceCriteria<IPropertyInspector> criteria)
{
criteria.Expect(x => x.Type == typeof(string)).Expect(x => x.Length == 0);
}
public void Apply(IPropertyInstance instance)
{
instance.Length(10000);
}
}

可以像这样将约定添加到自动映射配置中:

Fluently.Configure()
.Mappings( m =>
m.AutoMappings.Add( AutoMap.AssemblyOf<Foo>()
.Conventions.Add<StringColumnLengthConvention >()))

有关详细信息,请参阅 Conventions在 Fluent NHibernate wiki 中。

关于c# - 覆盖长文本字符串的流利 NHibernate nvarchar(MAX) 而不是 nvarchar(255),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2343105/

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