在此博文中:EF4 Code First Control Unicode and Decimal Precision, Scale with Attributes, Dane Morgridge 使用属性来控制数据库中不同类型的创建。
......我发现这个非常独特的BTW !!!
如何使用EF CTP5的代码优先API在生成的数据库中生成货币类型字段,是否可以使用约定或属性从模型中执行此操作?
抱歉我的英语不是我的主要语言。
提前致谢。
答案 0 :(得分:49)
例如,请考虑此Invoice类:
public class Invoice
{
public int InvoiceId { get; set; }
public decimal Amount { get; set; }
}
您可以使用流畅的API:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Invoice>()
.Property(i => i.Amount)
.HasColumnType("Money");
}
或者您可以使用数据注释:
public class Invoice
{
public int InvoiceId { get; set; }
[Column(TypeName="Money")]
public decimal Amount { get; set; }
}
答案 1 :(得分:11)
using System.Data.Entity.ModelConfiguration.Configuration.Properties.Primitive;
public class MoneyAttribute : Attribute { }
public class MoneyAttributeConvention : AttributeConfigurationConvention<PropertyInfo, DecimalPropertyConfiguration, MoneyAttribute> {
public override void Apply(PropertyInfo memberInfo, DecimalPropertyConfiguration configuration, MoneyAttribute attribute) {
configuration.ColumnType = "money";
}
}
然后就像那样使用
[Money]
public decimal Value { get; set; }