2017-06-23 3 views
0

Je rencontre un problème lors de l'insertion d'une valeur décimale dans la base de données à l'aide de PetaPoco.Erreur lors de l'insertion de la décimale dans la base de données avec petapoco

Dans mon modèle, j'ai le proeprty:

[Column("Price")] 
    public decimal PriceTotal { get; set; } 

et dans la databse la colonne correspondante Price est de type decimal(18, 2)

Quand je fais l'insert:

public void InsertModel(MyViewModel model) 
    { 
     _database.Insert(model); 
    } 

Je m obtenir une erreur:

System.InvalidCastException: 'Invalid cast from 'System.Decimal' to 'System.Nullable`1[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]'.' 

Vous ne savez pas comment faire autrement? ne pas decimal traduire au sql du serveur decimal(18,2)?

+0

Vous n'avez pas besoin de traduire quoi que ce soit. Avez-vous * lu * le message d'erreur? Vous essayez d'enregistrer ou de lire une décimale dans un champ entier –

+0

Affichez l'exception * full *, y compris sa pile d'appels, le schéma de la table et un exemple de code * reproductible *. Peut-être que vous avez défini 'ID' comme' numeric (18,2) 'dans la base de données et' int' dans votre classe, ce qui entraîne une erreur lorsque l'ORM essaie de récupérer l'ID généré automatiquement –

+0

J'ai écrit exactement ce que j'ai. Je ne sais pas si me traiter comme un idiot est une solution. – nickornotto

Répondre

0

Vous pouvez utiliser ce decimal?

[Column("Price")] 
public decimal? PriceTotal { get; set; } 
+0

Ce n'est pas l'erreur. Vous n'avez pas besoin d'un nombre décimal Null pour stocker les données dans un champ de base de données décimale. –

+0

Merci. Cela ne fonctionne pas - il s'est simplement avéré que c'était une erreur sur un autre champ qui était entier, je ne sais pas pourquoi il criait décimal alors qu'il n'était pas du tout lié à la seule propriété décimale que j'ai dans le modèle. – nickornotto