Переопределение для быстрого NHibernate для длинных текстовых строк nvarchar (МАКС) не nvarchar (255)

Когда когда-либо Вы устанавливаете строковое значение в быстром NHibernate это, alwasy устанавливает долины DB на Nvarchar (255), я должен сохранить довольно большую длинную строку, которая основана на вводах данных пользователем, и 255 непрактично.

Только для добавления это - проблема с автокартопостроителем, поскольку я использую быстрый NHibernate для создания базы данных.

40
задан TheAlbear 29 November 2011 в 12:30
поделиться

2 ответа

Добавление этого соглашения установит длину по умолчанию для свойств строки равной 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 >()))

Для получения дополнительной информации см. Условные обозначения в вики-странице Fluent NHibernate.

33
ответ дан 27 November 2019 в 01:44
поделиться

При установке длины больше 4001 будет сгенерирован NVarchar(MAX)...

.WithLengthOf(10000);

Более подробно см. здесь...

http://serialseb.blogspot.com/2009/01/fluent-nhibernate-and-nvarcharmax.html

17
ответ дан 27 November 2019 в 01:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: