2016-12-29 5 views
4

Je dois ajouter une contrainte uniquement pour le nombre positif (0 -...) et limiter les nombres comme (...- 1).Entity Framework code ajouter d'abord la contrainte pour les nombres positifs

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 ??? 

Quelque chose comme 'unsigned' dans MS SQL. Merci.

Répondre

4

La configuration courante d'Entity Framework ne prend actuellement pas en charge les réglages de valeur min ou max, juste la longueur.

Vous pouvez, cependant, mettre en œuvre la validation comme celui-ci, les annotations throught:

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

Mais cela n'engager dans la validation de sauvegarde, de ne pas la contrainte réelle ajoutés à la base de données comme il le ferait avec la configuration couramment/migration.

PS

I love migrations Entity Framework, mais je ne l'utilise que pendant le développement jusqu'à la première version. C'est un énorme gain de temps jusqu'à ce que vous expédiez votre produit. Après cela, je règle habituellement la base de données moi-même, y compris les index et les contraintes, et abandonne complètement les migrations EF.

Les bases de données devraient être ajustées cliniquement en production, car elles sont généralement l'un des facteurs les plus importants (sinon le plus important) de performance et d'optimisation. Et, malheureusement, les migrations EF ne vous offrent pas toute la flexibilité dont vous avez besoin, même si elle couvre les cas d'utilisation les plus importants.

1

Peut-être avec une plage Dataannotation:

[Range(0.0, Double.MaxValue)] 

Seules les valeurs sur 0 est ce que vous cherchez, vous n'êtes pas?