Entity framework 4 EF4 CodeFirst CTP5 nvarchar(最大值)via属性

Entity framework 4 EF4 CodeFirst CTP5 nvarchar(最大值)via属性,entity-framework-4,data-annotations,ef4-code-only,fluent-interface,code-first,Entity Framework 4,Data Annotations,Ef4 Code Only,Fluent Interface,Code First,有没有一种方法可以创建一个自定义属性,使EF CodeFirst在分配给poco类的属性时使用nvarchar(max)作为数据类型?我知道这可以通过fluentapi实现,但是我们希望所有的定义都在一个地方,那就是元数据类 Fluent API: modelBuilder.Entity<Event>().Property(p => p.TicketText).HasColumnType("nvarchar(max)"); modelBuilder.Entity(); 公共类

有没有一种方法可以创建一个自定义属性,使EF CodeFirst在分配给poco类的属性时使用nvarchar(max)作为数据类型?我知道这可以通过fluentapi实现,但是我们希望所有的定义都在一个地方,那就是元数据类

Fluent API:

modelBuilder.Entity<Event>().Property(p => p.TicketText).HasColumnType("nvarchar(max)");
modelBuilder.Entity();
公共类NVarcharMaxAttribute:Attribute{}
公共类NVarcharMaxAttributeConvention:AttributeConfiguration约定{
公共覆盖无效应用(PropertyInfo成员信息、StringPropertyConfiguration配置、NVarcharMaxAttribute属性){
configuration.ColumnType=“nvarchar(max)”;
}
}
模型创建时受保护的覆盖无效(ModelBuilder ModelBuilder){
modelBuilder.Conventions.Add();
}
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>();
}
[System.ComponentModel.DataAnnotations.MaxLength]