web-dev-qa-db-ja.com

最初にコードEF CTP5を使用してマネータイプフィールドを生成する

このブログの投稿: EF4 Code First Control Unicode and Decimal Precision、Scale with AttributesDane Morgridgeは、データベースにさまざまなタイプの作成。

...そして、このかなりユニークなBTWを見つけました!!!

EF CTP5のコードファーストAPIを使用して、結果のデータベースにマネータイプフィールドを生成するにはどうすればよいですか?

私の英語が私の主な言語ではありません。

前もって感謝します。

27

たとえば、次の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; }
}
51
Morteza Manavi
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; }
11
Kim Tranjan