29

このブログ投稿:EF4コードファーストコントロールUnicodeとDecimal Precision、属性付きスケールDane Morgridgeは、属性を使用してデータベースでのさまざまなタイプの作成を制御しました。

...そして私はこのかなりユニークなところで見つけました!!!

規則または属性を使用してモデルから実行できる場合、EF CTP5のコードファーストAPIを使用して、結果のデータベースにマネータイプフィールドを生成するにはどうすればよいですか?

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

前もって感謝します。

4

2 に答える 2

53

たとえば、次の請求書クラスについて考えてみます。

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 に答える