Generate money type fields using code first EF CTP5

后端 未结 2 1372
野性不改
野性不改 2020-12-06 04:10

In this blog post: EF4 Code First Control Unicode and Decimal Precision, Scale with Attributes, Dane Morgridge used attributes to control the creation of di

相关标签:
2条回答
  • 2020-12-06 04:53

    For example, consider this Invoice class:

    public class Invoice
    {
        public int InvoiceId { get; set; }                
        public decimal Amount { get; set; }
    }
    

    You can do it with fluent API:

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Invoice>()
                    .Property(i => i.Amount)
                    .HasColumnType("Money");
    }
    

    Or you can do it with Data Annotations:

    public class Invoice
    {
        public int InvoiceId { get; set; }                
    
        [Column(TypeName="Money")]
        public decimal Amount { get; set; }
    }
    
    0 讨论(0)
  • 2020-12-06 04:56
    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";
        }
    }
    

    then you use like that

    [Money]
    public decimal Value { get; set; }
    
    0 讨论(0)
提交回复
热议问题