EF4 CodeFirst CTP5 nvarchar (max) через атрибут - PullRequest
3 голосов
/ 22 февраля 2011

Есть ли способ создать собственный атрибут, который заставит EF CodeFirst использовать nvarchar (max) в качестве типа данных при назначении свойству класса poco? Я знаю, что это возможно через свободный API, но мы хотели бы иметь все определения в одном месте, и это класс метаданных.

Свободный API:

modelBuilder.Entity<Event>().Property(p => p.TicketText).HasColumnType("nvarchar(max)");

Ответы [ 2 ]

7 голосов
/ 22 февраля 2011
public class NVarcharMaxAttribute : Attribute { }

public class NVarcharMaxAttributeConvention : AttributeConfigurationConvention<PropertyInfo, StringPropertyConfiguration, NVarcharMaxAttribute> {
    public override void Apply(PropertyInfo memberInfo, StringPropertyConfiguration configuration, NVarcharMaxAttribute attribute) {
        configuration.ColumnType = "nvarchar(max)";
    }
}

protected override void OnModelCreating(ModelBuilder modelBuilder) {
    modelBuilder.Conventions.Add<NVarcharMaxAttributeConvention>();
}
5 голосов
/ 30 марта 2011
[System.ComponentModel.DataAnnotations.MaxLength]
...