2016-07-29 47 views
1

目前,在EF 6.1.3中,如果使用HasPrecision(6,2)在Code First中聲明小數,值爲1234567.0,則GetValidationErrors不會檢測到任何錯誤,並且SaveChanges失敗。如何讓EF GetValidationErrors驗證小數?

我不想定製驗證每個正在寫入數據庫的實體,並想以某種方式獲取GetValidationErrors來驗證要寫入已聲明精度的數據庫的小數的大小。

這可能嗎?可能是我錯過了一些東西...... Thx!

回答

0
  • 您更改,例如你的財產精度在你的DbContext這樣的:
modelBuilder.Entity<AnEntity>().Property(e => e.property).HasPrecision(14, 12); 
  • 您也可以禁用在保存自動驗證並創建自定義的數據標註爲驗證:

MyDbContext.Configuration.ValidateOnSaveEnabled = false;

+0

THX但這些都不回答我的問題。更改精度不是一個選項。我不想驗證每個小數點,我想EF基於HasPrecision設置進行驗證。可能我所要求的是不可能的,但EF「應該」基於精度進行驗證。 – Dave

+0

@Dave也許你會寫一些代碼示例,這會讓你更容易理解你需要的東西。我認爲這是自定義數據註釋possibe,但顯示我的代碼,以避免任何誤解,我會更新答案。 –

+0

我有幾十個模型和許多使用HasPrecision的小數字段通過流暢的界面來設置SQL精度和比例。我只是希望該設置在所有情況下作爲驗證的一部分,用於在我的DbContext中添加或更新任何模型時檢查小數的大小是否不超過該精度。 Iow,精度(6,2)應該只允許-999999.0到999999.0之間的數字,沒有更小或更大的數字。 – Dave