Lors de l'exécution d'une requête LINQ qui tente d'appliquer Double.Parse aux propriétés de chaîne dans un contexte de base de données, les utilisateurs peuvent rencontrer les problèmes suivants erreur :
"LINQ to Entities ne reconnaît pas la méthode 'Double Parse(System.String)', et cette méthode ne peut pas être traduite en une expression de magasin."
Entity Framework (EF) est conçu pour traduire les requêtes LINQ en commandes SQL pouvant être exécutées sur la base de données. Toutefois, la méthode Double.Parse n'est pas une fonction SQL valide. Par conséquent, EF ne peut pas le traduire en SQL et exécuter la requête avec succès.
Pour résoudre ce problème, vous devez créer une méthode personnalisée qui effectue la même opération que Double.Parse et faire EF en est conscient afin de pouvoir le traduire en SQL.
Étape 1 : Définir la personnalisation Fonction
Dans le fichier Entity Data Model (EDMX) associé à votre contexte de données, ajoutez la définition de fonction suivante dans le fichier
<Function Name="ParseDouble" ReturnType="Edm.Double"> <Parameter Name="stringvalue" Type="Edm.String" /> <DefiningExpression> cast(stringvalue as Edm.Double) </DefiningExpression> </Function>
Cette fonction indique à EF comment convertir une valeur de chaîne en valeur double en SQL.
Étape 2 : implémenter la méthode personnalisée
Dans la classe partielle qui définit votre contexte de données, créez une méthode correspondant à la signature de la fonction que vous avez définie dans l'EDMX fichier :
public partial class MyDataContext { [EdmFunction("YourModel", "ParseDouble")] public static double ParseDouble(string stringvalue) { return Double.Parse(stringvalue); } }
Étape 3 : Utilisez la fonction personnalisée dans la requête LINQ
Vous pouvez désormais utiliser la fonction ParseDouble dans vos requêtes LINQ :
var query = context.MyEntities .Select(e => new { DoubleValue = ParseDouble(e.StringValue) });
En suivant ces étapes, vous pouvez permettre à EF de traduire vos requêtes LINQ qui utilisent Double.Parse en SQL valide, résolution de l'erreur « LINQ to Entities ne reconnaît pas la méthode ».
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!