29

在这篇博文中:EF4 Code First Control Unicode and Decimal Precision, Scale with Attributes中,Dane Morgridge使用属性来控制数据库上不同类型的创建。

...我发现这个非常独特的顺便说一句!

如何使用 EF CTP5 的代码优先 API 在生成的数据库中生成货币类型字段,如果可以从您的模型中使用约定或属性来生成?

对不起,我的英语不是我的主要语言。

提前致谢。

4

2 回答 2

53

例如,考虑这个 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; }
}
于 2011-01-28T22:01:07.580 回答
12
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; }
于 2011-01-28T23:19:13.573 回答