Переопределить автоматическое сопоставление FluentNHibernate - PullRequest
0 голосов
/ 10 сентября 2011

Мне нужно изменить тип данных следующего класса, принятый по умолчанию. FluentNHibernate Automapping

public class plaparte
{
public virtual int id { get; private set; }
public virtual int vivos { get; set; }
public virtual int lesionados { get; set; }
public virtual int quemados { get; set; }
public virtual int muertos { get; set; }
public virtual int otros { get; set; }
public virtual string colaboracion { get; set; }
public virtual decimal hectareas { get; set; }
public virtual string reconocimiento { get; set; }
public virtual string disposiciones { get; set; }
public virtual plaserv plaserv { get; set; }
}
}

Мне нужно для этого класса преобразовать только тип строки в текст в базе данных.1005 *

FluentNHibernate принимает тип данных BLOB

Я могу сделать что-то вроде?

public class plaparteMappingOverride : IAutoMappingOverride<plaparte>
{
public void Override(AutoMapping<plaparte> mapping)
{
  Map(x => x.disposiciones).CustomSqlTypeIs("TEXT");
}
}

1 Ответ

1 голос
/ 01 октября 2011

Для решения проблемы я использую:

using System.ComponentModel.DataAnnotations;
...
public class plaparte
{
...
[StringLength(4000)]
public virtual string disposiciones { get; set; }

Для создания текстовых полей

[Обновить]

Для работы мне нужно создать следующий класс

class StringLengthConvention : AttributePropertyConvention<StringLengthAttribute>
{
    protected override void Apply(StringLengthAttribute attribute, IPropertyInstance instance)
    {
        instance.Length(attribute.MaximumLength);
    }
}

также необходимо добавить соглашение Fluent automap Like

    static AutoPersistenceModel CreateAutomappings()
    {
        return AutoMap.AssemblyOf<plaparte>(new mapAutomapConfiguration())
            .Conventions.Setup(c =>
            {
                c.Add<StringLengthConvention>();
            });
    }
...