2016-12-29 230 views
4

我只需要爲正數(0 -...)添加約束並將數字限制爲(...- 1)。實體框架代碼第一次爲正數添加約束

CreateTable(
    "dbo.Drinks", 
    c => new 
    { 
     Id = c.Int(nullable: false, identity: true), 
     Name = c.String(), 
     ImageUrl = c.String(), 
     Price = c.Int(nullable: false), 
     Count = c.Int(nullable: false) 
    }) 
    .PrimaryKey(t => t.Id); 
    //.Constraint ??? 

類似MS SQL中的'unsigned'。 謝謝。

回答

4

實體框架流暢配置當前不支持最小或最大值設置,只是長度。

你可以,但是,執行這樣的驗證,throught註釋:

[Range(1, int.MaxValue, ...)] 
int YourInt{ get; set; } 

但這隻會保存過程中驗證承擔,而不是實際的約束被添加到數據庫中,因爲它會用流利的配置/ 移民。

PS

我喜歡實體框架遷移,但我在開發過程中只使用它,直到首次發佈。除非您實際運送您的產品,否則這將節省很多時間。之後,我通常會自己精細調整數據庫,包括索引和約束,並完全放棄使用EF遷移。

數據庫應該在生產中進行臨牀調整,因爲它們通常是性能和優化中最重要的因素(如果不是最重要的)。不幸的是,EF遷移並不能爲您提供所需的全部靈活性,即使它涵蓋了最重要的用例。

1

也許射程Dataannotation:

[Range(0.0, Double.MaxValue)] 

只值在0是你在找什麼,不是嗎?