在此博客文章中:EF4 Code First Control Unicode and Decimal Precision, Scale with Attributes,Dane Morgridge使用屬性來控制數據庫上不同類型的創建。使用代碼優先生成錢類型字段EF CTP5
...我發現這個非常獨特的BTW!
如何使用EF CTP5的代碼優先API在生成的數據庫中生成貨幣類型字段,如果可以使用約定或屬性從您的模型中完成它?
對不起,我的英語不是我的主要語言。
在此先感謝。
在此博客文章中:EF4 Code First Control Unicode and Decimal Precision, Scale with Attributes,Dane Morgridge使用屬性來控制數據庫上不同類型的創建。使用代碼優先生成錢類型字段EF CTP5
...我發現這個非常獨特的BTW!
如何使用EF CTP5的代碼優先API在生成的數據庫中生成貨幣類型字段,如果可以使用約定或屬性從您的模型中完成它?
對不起,我的英語不是我的主要語言。
在此先感謝。
例如,請考慮這樣的發票類:
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; }
一般來說(除非你使用現有的數據庫模式),我會避免使用SQL money數據類型。你最好使用具有特定精度和比例的小數以滿足你的應用需求 – 2011-01-28 15:31:57
@Damien有趣......爲什麼是這樣? – 2011-06-20 20:20:49
相關,使用錢類型參數與EF遷移工作:http://stackoverflow.com/questions/27696728/dbmigration-alterstoredprocedure-entity-framework-migration-how-to-represent – 2015-10-27 14:50:34