我們一直在我們的解決方案中使用EF CF。大粉絲!到目前爲止,我們一直在使用hack來支持枚舉(在模型上創建一個額外的字段;忽略枚舉映射;並將額外的字段映射到我們將使用的數據庫中的列)。傳統上,我們一直在數據庫中存儲我們的枚舉作爲字符串(varchars)(使它更好,更易讀)。現在在EF 5(Beta 2)中支持enum,它看起來像它只支持將枚舉映射到DB中的int列......我們可以讓EF 5將枚舉存儲爲它們的字符串表示形式。我可以將枚舉存儲爲EF 5中的字符串嗎?
其中 「類型」 是
public enum DocumentType
{
POInvoice,
NonPOInvoice,
Any
}
我試圖使用地圖這類型DocumentType的枚舉:
public class WorkflowMap : EntityTypeConfiguration<Model.Workflow.Workflow>
{
public WorkflowMap()
{
ToTable("Workflow", "Workflow");
...
Property(wf => wf.Type).HasColumnType("varchar");
}
}
我認爲是將成爲靈丹妙藥,但..
剛剛拋出:
Sch指定的ema無效。錯誤:(571,12):錯誤2019年:成員 指定的映射無效。類型 「Dodson.Data.DataAccess.EFRepositories.DocumentType [可空=假,默認值=」在 型構件「類型」的 「Dodson.Data.DataAccess.EFRepositories.Workflow」不是 與 「SqlServer的兼容'CodeFirstDatabaseSchema.Workflow'類型的成員'Type'的.varchar [Nullable = False,DefaultValue =,MaxLength = 8000,Unicode = False,FixedLength = False]' 。
您的想法?
這確實是工作,但有點哈克。 – 2015-08-05 09:44:38
是的。也許EF 7會有一些東西。 – Bryan 2015-08-05 14:41:19
很好的解決方案。一點點評論,一旦你使用擴展方法,你可以簡單的寫 - 值.ParseEnum(),而不是EnumExtensions.ParseEnum (值)。 –
IFink
2016-03-21 10:40:29