2009-08-11 9 views
1

je les classes suivantes (je l'ai coupé le code):Linq modèle de référentiel "Specified cast is not valide" Erreur

public class SqlWeightTrackerRepository : IWeightTrackerRepository 
{ 
    private Table<WeightTracker> m_weightTrackerTable; 

    //... constructor + other code here 

    public IQueryable<WeightTracker> WeightTracker 
    { 
     get { return m_weightTrackerTable; } 
    } 
} 

// CODE QUI DONNE L'ERREUR

[IGNORE CETTE LIGNE ->] private IMembersRepository m_membersRepository = new SqlWeightTrackerRepository(); [I WAS FATIGUE ET AJOUTE inexactement]

privé IWeightTrackerRepository m_weightTrackerRepository = new SqlWeightTrackerRepository();

// ... un autre code de

 if (report.PreviousWeightTrackerId == 0) 
      try { //If no session was found try find an entry in the database 
       var tmp = 
        (from x 
         in m_weightTrackerRepository.WeightTracker 
        where x.MemberId == report.Member.MemberId 
        orderby x.Created_On descending 
        select x).First(); 

      } catch (Exception e) {} 

// STACK TRACE

à System.Data.Linq.SqlClient.SqlProvider.Execute (requête de l'expression, QueryInfo QueryInfo, usine IObjectReaderFactory, objet [] parentArgs, Object [] userArgs, sous-requêtes ICompiledSubQuery [], Object lastResult) à System.Data.Linq.SqlClient.SqlProvider.ExecuteAll (requête d'expression, QueryInfo [] queryInfos, fabrique IObjectReaderFactory, Object [] userArguments, ICompiledSubQuery [] subQueries) à System.Data.Linq.SqlClient.SqlProvider.System.Dat a.Linq.Provider.IProvider.Execute (requête d'expression) à System.Data.Linq.DataQuery 1.System.Linq.IQueryProvider.Execute[S](Expression expression) at System.Linq.Queryable.First[TSource](IQueryable 1 source) à WebUI.Controllers.MembersController.Welcome() dans D: \ PROJECTS \ 3DData \ LoseOnlyToday \ WebUI \ Controllers \ MembersController.cs: ligne 59'

Ce code donne une exception "Specified cast is not valid"

Je sais pertinemment la requête fonctionne - je débogueur LINQ scott gu pour le vérifier - il retourne 3 lignes ... (DEBUGGER: http://weblogs.asp.net/scottgu/archive/2007/07/31/linq-to-sql-debug-visualizer.aspx)

Je suis à un total perdre ... été à la recherche d'heures sur google pour une solution. L'affichage de ceci est le dernier recours. Quelqu'un peut-il aider? Serait très apprécié!

Répondre

3

SqlWeightTrackerRepository implémente IWeightTrackerRepository, mais vous essayez de le convertir en IMembersRepository (w/"IMembersRepository m_membersRepository").

Change:

private IMembersRepository m_membersRepository = new SqlWeightTrackerRepository(); 

à:

private IWeightTrackerRepository m_membersRepository = new SqlWeightTrackerRepository(); 

et vous seriez d'or.

+0

Merci pour la réponse! Je me sens comme un tel noob ... – etangreal

+0

Pas de problème - assurez-vous de signaler les bonnes réponses pour que d'autres puissent en bénéficier. –

Questions connexes