Maison > développement back-end > C++ > Comment résoudre « LINQ to Entities ne reconnaît pas la méthode 'Double Parse(System.String)' » ?

Comment résoudre « LINQ to Entities ne reconnaît pas la méthode 'Double Parse(System.String)' » ?

Linda Hamilton
Libérer: 2024-12-31 11:12:15
original
598 Les gens l'ont consulté

How to Resolve

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

Problème

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."

Le problème

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.

Solution

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 element :

<Function Name="ParseDouble" ReturnType="Edm.Double">
  <Parameter Name="stringvalue" Type="Edm.String" />
  <DefiningExpression>
    cast(stringvalue as Edm.Double)
  </DefiningExpression>
</Function>
Copier après la connexion

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);
    }
}
Copier après la connexion

É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)
    });
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal