Шаблон репозитория Linq Указанное приведение неверно Ошибка

У меня есть следующие классы (я обрезал код):

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

    //... constructor + other code here

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

// КОД, ВЫЯВЛЯЮЩИЙ ОШИБКУ

[ИГНОРИРОВАТЬ ЭТУ СТРОКУ ->] private IMembersRepository m_membersRepository = new SqlWeightTrackerRepository (); [Я УСТАЛО И ДОБАВИЛ ЕГО НЕПРАВИЛЬНО]

private IWeightTrackerRepository m_weightTrackerRepository = новый SqlWeightTrackerRepository ();

// ... какой-то другой код

        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) {}

//ТРАССИРОВКИ СТЕКА

в System.Data.Linq.SqlClient.SqlProvider.Execute (запрос выражения, QueryInfo queryInfo, IObjectReaderFactory factory, Object [] parentArgs, Object [] userArgs, ICompiledSubQuery [] подзапросы, Object lastResult) в System.Data.Clider.Sqlient. .ExecuteAll (запрос выражения, QueryInfo [] queryInfos, IObjectReaderFactory factory, Object [] userArguments, ICompiledSubQuery [] подзапросы) в System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provideecuter.IProvider. в источнике System.Data.Linq.DataQuery1.System.Linq.IQueryProvider.Execute[S](Expression expression) at System.Linq.Queryable.First[TSource](IQueryable1) в WebUI.Controllers.MembersController.Welcome () в D: \ PROJECTS \ 3DData \ LoseOnlyToday \ WebUI \ Controllers \ MembersController.cs: строка 59 '

Этот код выдает исключение «Указанное приведение недопустимо».

Я точно знаю, что запрос работает - я использовал отладчик linq scott gu для его проверки - он возвращает 3 строки ... (DEBUGGER: http://weblogs.asp.net/scottgu/archive/2007/31июля/linq-to-sql-debug-visualizer.aspx)

Я в полном проигрыше ... часами искал в Google решение. Публикация этого - последнее средство. Может кто поможет? Буду очень признателен!


person etangreal    schedule 11.08.2009    source источник


Ответы (1)


SqlWeightTrackerRepository реализует IWeightTrackerRepository, но вы пытаетесь преобразовать его в IMembersRepository (с «IMembersRepository m_membersRepository»).

Изменять:

private IMembersRepository m_membersRepository = new SqlWeightTrackerRepository();

to:

private IWeightTrackerRepository m_membersRepository = new SqlWeightTrackerRepository();

и ты был бы золотым.

person Beep beep    schedule 11.08.2009
comment
Нет проблем - обязательно отметьте правильные ответы, чтобы другие могли получить пользу. - person Beep beep; 11.08.2009