Ensemble décimal(16, 3) pour une colonne dans la Première Approche de Code dans EF4.3
Comment puis-je faire cela :
private decimal _SnachCount;
[Required]
[DataType("decimal(16 ,3")]
public decimal SnachCount
{
get { return _SnachCount; }
set { _SnachCount = value; }
}
private decimal _MinimumStock;
[Required]
[DataType("decimal(16 ,3")]
public decimal MinimumStock
{
get { return _MinimumStock; }
set { _MinimumStock = value; }
}
private decimal _MaximumStock;
[Required]
[DataType("decimal(16 ,3")]
public decimal MaximumStock
{
get { return _MaximumStock; }
set { _MaximumStock = value; }
}
Après la génération de la base de données par cette partie de mon modèle , ces trois colonnes de type decimal(18,2),pourquoi?
qu'est-ce que ce code d'erreur? comment puis-je le faire ?
- double possible de Décimal précision et l'échelle en EF Premier Code
Vous devez vous connecter pour publier un commentaire.
La
DataType
Attribut est un Attribut Validation. Vous devez le faire en utilisant les ModelBuilder.OnModelCreating
méthode (comme illustré ci-dessus), si vous exécutez ensuite laadd-migration
de commande dans le Gestionnaire de paquets de la Console, il va reconnaître votre nouveau code, et va ajouter une migration correctement modifier le nombre de colonnes.Vous pouvez modifier toutes les propriétés sans décimale dans la base de données. Dans votre DBContext dans la méthode OnModelCreating, ajoutez la ligne:
C'est copié à partir de la réponse que j'ai posté la même question ici; https://stackoverflow.com/a/15386883/1186032.
J'ai passé un agréable moment de la création d'un Attribut Personnalisé pour cette:
à l'aide de cette
et la magie qui se passe à la création du modèle avec une certaine réflexion
la première partie est d'obtenir toutes les classes dans le modèle (mon attribut personnalisé est défini dans cette assemblée, j'ai donc utilisé que pour obtenir de l'assemblée avec le modèle)
le deuxième foreach obtient toutes les propriétés de la classe avec l'attribut personnalisé, et l'attribut lui-même afin que je puisse obtenir la précision et l'échelle des données
après que j'ai appeler
j'appelle donc le modelBuilder.Entité() par la réflexion et la stocker dans la variable entityConfig
puis-je construire le "c => c.PROPERTY_NAME" lambda expression
Après, si la décimale est nullable j'appelle le
méthode (j'appelle cela par la position dans le tableau, ce n'est pas idéal, je sais, toute aide sera appréciée)
et si ce n'est pas nullable j'appelle le
méthode.
Avoir le DecimalPropertyConfiguration j'appelle le HasPrecision méthode.
Donc, ce que j'ai eu à travailler pour moi, c'est ceci:
C'est EF premier Code pour .NET de base.
Vous pouvez également définir la précision des décimales en utilisant le code-premier modèle, à l'approche de la cartographie comme ceci: