Nous avons deux procédures stockées dans Microsoft SQL Server qui renvoient des données qui sont conceptuellement du même type. On retourne un ID comme SCOPE_TDENTITY() (un numérique), tandis que l'autre renvoie 0 (un int32). Nous avons un type complexe avec un ID de propriété. Si cette propriété est une décimale annulable, nous recevons l'erreur suivante lors de l'énumération des résultats de la procédure stockée qui retourne un int32:Comment convertir des types numériques dans le mappage d'une procédure stockée en un type complexe dans Entity Framework 4?
The 'ID' property on 'EntitryRequestReturn' could not be set to a 'Int32' value. You must set this property to a non-null value of type 'Decimal'.
Modification du type de la propriété à un int32 se déplace simplement l'erreur à l'autre sproc, avec les types de données répertoriés dans l'ordre inverse. Le fait de savoir si les types sont nullables ne fait aucune différence.
Comment puis-je obtenir EF4 pour convertir une colonne int renvoyée à partir d'un sproc en une décimale lors de la construction du type complexe?
C'est ce que nous avons fait. La plupart de nos problèmes ont été provoqués par SCOPE_IDENTITY, que nous avons renvoyé comme un entier maintenant. Pour utiliser EF, nous traitons les sprocs avec des types de retour changeants comme des bogues et nous réparons le sproc. – Cirdec