【问题标题】:Linq Repository pattern "Specified cast is not valid" ErrorLinq 存储库模式“指定的强制转换无效”错误
【发布时间】:2009-08-11 01:10:41
【问题描述】:

我有以下课程(我已经修剪了代码):

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(); [我很累,添加不正确]

私有 IWeightTrackerRepository m_weightTrackerRepository = new 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 工厂,Object[] parentArgs,Object[] userArgs,ICompiledSubQuery[] subQueries,Object lastResult) 在 System.Data.Linq.SqlClient.SqlProvider.ExecuteAll(表达式查询,QueryInfo[] queryInfos,IObjectReaderFactory 工厂,Object[] userArguments,ICompiledSubQuery[] subQueries) 在 System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(表达式查询) 在 System.Data.Linq.DataQuery1.System.Linq.IQueryProvider.Execute[S](Expression expression) at System.Linq.Queryable.First[TSource](IQueryable1 来源) 在 D:\PROJECTS\3DData\LoseOnlyToday\WebUI\Controllers\MembersController.cs:line 59' 中的 WebUI.Controllers.MembersController.Welcome() 处

此代码给出异常“指定的强制转换无效”

我知道查询有效——我使用 scott gu 的 linq 调试器来检查它——它返回 3 行... (调试器:http://weblogs.asp.net/scottgu/archive/2007/07/31/linq-to-sql-debug-visualizer.aspx

我完全失败了......一直在谷歌上寻找几个小时的解决方案。发布这是最后的手段。 有人可以帮忙吗?将不胜感激!

【问题讨论】:

    标签: linq-to-sql


    【解决方案1】:

    SqlWeightTrackerRepository 实现了 IWeightTrackerRepository,但您试图将其转换为 IMembersRepository(w/“IMembersRepository m_membersRepository”)。

    变化:

    private IMembersRepository m_membersRepository = new SqlWeightTrackerRepository();
    

    到:

    private IWeightTrackerRepository m_membersRepository = new SqlWeightTrackerRepository();
    

    你会是金色的。

    【讨论】:

    • 没有问题 - 确保标记正确答案,以便其他人受益。
    猜你喜欢
    • 1970-01-01
    • 2015-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-27
    • 2015-01-06
    • 1970-01-01
    相关资源
    最近更新 更多