【发布时间】:2013-03-04 23:29:45
【问题描述】:
我在以下代码行中出现随机错误(100 个页面加载中的 1 个):
topic = TopicsContext.GetCurrentDataContext().tTopics.Where(t => t.ContentId == contentId).SingleOrDefault();
ContentId 属性和 contentId 局部变量都很长。
最重要的是——错误是随机发生的,在大多数情况下它都能正常工作。
提前感谢您的想法
这是完整的异常信息:
Error Message: Specified cast is not valid.
Error Source: System.Data.Linq
Error 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)
at System.Data.Linq.DataQuery`1.System.Linq.IQueryProvider.Execute[S](Expression expression)
at System.Linq.Queryable.SingleOrDefault[TSource](IQueryable`1 source)
at Topics.BusinessLogic.Models.Services.TopicService.GetTopic(String title) in C:\rabota\topics\source\trunk\Topics.BusinessLogic\Models\Services\TopicService.cs:line 65
【问题讨论】:
-
生成的SQL是什么样子的?
-
真的是随机的吗,也就是说你可以多次选择相同的数据,得到不同的结果?
-
ContentId 是外键吗?如果是,它可以为空吗?
-
是的,ContentId 是 FK。 ContantId 不是可为空的字段
-
“它真的是随机的吗,这意味着您可以多次选择相同的数据并获得不同的结果?” - 随机我的意思是,大多数情况下这段代码工作正常并返回正确的结果,我有例外在大约 1% 的页面加载中进行了描述。
标签: linq linq-to-sql