0
votes

Récupérer et mettre en cache un résultat défini dans ma demande

J'ai une colonne octet [] code> dans une table contenant des données d'empreintes digitales stockées. Je souhaite interroger les lignes d'une table une seule fois et stocker l'enregistrement défini dans une variable ou quelque part dans mon code, de sorte que je n'ai pas à interroger la base de données à chaque fois. La requête reviendra des milliers de lignes.

Cela va chercher tous les enregistrements pour moi: P>

foreach (var row in Data.TableData)
{
    Template tem = new Template();
    tem.DeSerialize(row.a.fingerTemplate);

    if (tem != null)
    {
        // Compare feature set with particular template.
        Verificator.Verify(features, tem, ref res);

        if (res.Verified)
        {...}
    }
}


3 commentaires

Quel est le type de données de context.tblfingerprints ?


Les bases de données sont conçues pour être interrogées, avez-vous rencontré un problème de performance?


@MichaElrandall Eh bien, comme ma base de données grandit, il faut beaucoup plus de temps pour récupérer et comparer une empreinte digitale contre des milliers d'enregistrements.


3 Réponses :


0
votes

Vous les retournez comme nouveaux objets avec Sélectionnez Nouveau {A} . Si context.tblfingerprints est de type TableAta


0 commentaires

0
votes
  • Vous n'avez pas besoin du Sélectionnez Nouveau {A} (Ceci crée un nouveau type anonyme, avec un seul membre pour un enregistrement complet, idiot.
    • Vous n'avez pas non plus besoin d'expression de LINQ du tout, utilisez simplement tolist () sur le DBSet directement.
    • stocker le résultat dans une variable statique. xxx

0 commentaires

0
votes

Supprimer le "nouveau {A}" et remplacez-le par "A", et dites TOLIST que c'est une liste d'objets.

var table = (from a in context.tblFingerprints
             select a).ToList<object>();


0 commentaires