有没有办法创建一个自定义属性,使 EF CodeFirst在分配给 poco 类的属性时使用nvarchar(max)作为数据类型?我知道这可以通过 fluent api 实现,但我们希望将所有定义放在一个地方,这就是元数据类。
流畅的 API:
modelBuilder.Entity<Event>().Property(p => p.TicketText).HasColumnType("nvarchar(max)");
有没有办法创建一个自定义属性,使 EF CodeFirst在分配给 poco 类的属性时使用nvarchar(max)作为数据类型?我知道这可以通过 fluent api 实现,但我们希望将所有定义放在一个地方,这就是元数据类。
流畅的 API:
modelBuilder.Entity<Event>().Property(p => p.TicketText).HasColumnType("nvarchar(max)");
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]