在这篇博文中:EF4 Code First Control Unicode and Decimal Precision, Scale with Attributes中,Dane Morgridge使用属性来控制数据库上不同类型的创建。
...我发现这个非常独特的顺便说一句!
如何使用 EF CTP5 的代码优先 API 在生成的数据库中生成货币类型字段,如果可以从您的模型中使用约定或属性来生成?
对不起,我的英语不是我的主要语言。
提前致谢。
在这篇博文中:EF4 Code First Control Unicode and Decimal Precision, Scale with Attributes中,Dane Morgridge使用属性来控制数据库上不同类型的创建。
...我发现这个非常独特的顺便说一句!
如何使用 EF CTP5 的代码优先 API 在生成的数据库中生成货币类型字段,如果可以从您的模型中使用约定或属性来生成?
对不起,我的英语不是我的主要语言。
提前致谢。
例如,考虑这个 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; }
}
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; }