我有以下课程(我已修剪过代码):
public class SqlWeightTrackerRepository : IWeightTrackerRepository
{
private Table<WeightTracker> m_weightTrackerTable;
//... constructor + other code here
public IQueryable<WeightTracker> WeightTracker
{
get { return m_weightTrackerTable; }
}
}
//导致错误的代码
[IGNORE THIS LINE - &gt;] 私人IMembersRepository m_membersRepository = new SqlWeightTrackerRepository(); [我已经厌倦了并且不正确地加了]
private 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) {}
// STACK TRACE
at System.Data.Linq.SqlClient.SqlProvider.Execute(Expression query,QueryInfo queryInfo,IObjectReaderFactory factory,Object [] parentArgs,Object [] userArgs,ICompiledSubQuery [] subQueries,Object lastResult)
at System.Data.Linq.SqlClient.SqlProvider.ExecuteAll(Expression query,QueryInfo [] queryInfos,IObjectReaderFactory factory,Object [] userArguments,ICompiledSubQuery [] subQueries)
at System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query)
在System.Data.Linq.DataQuery 1.System.Linq.IQueryProvider.Execute[S](Expression expression)
at System.Linq.Queryable.First[TSource](IQueryable
1来源)
在WebUI.Controllers.MembersController.Welcome()在D:\ PROJECTS \ 3DData \ LoseOnlyToday \ WebUI \ Controllers \ MembersController.cs:第59行'
此代码提供异常“指定的强制转换无效”
我知道查询有效 - 我用scott gu的linq调试器检查它 - 它返回3行... (DEBUGGER:http://weblogs.asp.net/scottgu/archive/2007/07/31/linq-to-sql-debug-visualizer.aspx)
我完全失败了...一直在谷歌寻找解决方案的时间。发布这是最后的手段。 有人可以帮忙吗?非常感谢!
答案 0 :(得分:3)
SqlWeightTrackerRepository实现了IWeightTrackerRepository,但您正在尝试将其强制转换为IMembersRepository(带有“IMembersRepository m_membersRepository”)。
变化:
private IMembersRepository m_membersRepository = new SqlWeightTrackerRepository();
为:
private IWeightTrackerRepository m_membersRepository = new SqlWeightTrackerRepository();
你会成为金色的。