LINQ:指定的 Cast 无效

标签 linq linq-to-sql

我在以下代码行中出现随机错误(100 个页面加载中有 1 个):

topic = TopicsContext.GetCurrentDataContext().tTopics.Where(t => t.ContentId == contentId).SingleOrDefault();

ContentId 属性和 conntentId 局部变量都很长。

最重要的是 - 错误是随机发生的,在大多数情况下都可以正常工作。

提前感谢您的想法

这里是完整的异常信息:

 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

最佳答案

当我使用一个版本的数据库生成 LINQ-to-SQL 包装器并尝试将其用于另一个版本的数据库时,我得到了这个。在我的例子中,一个定义为短列的列被更改为长列,并且从数据库中出来的一个值不能转换为长列。确保您的 LINQ-to-SQL 包装器和数据库表同步。

关于LINQ:指定的 Cast 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1087318/

相关文章:

c# - 将 System.Linq.IOrderedEnumerable<T> 转换为 List<T>

c# - List.All() 和 List.TrueForAll() 之间的区别

c# - 使用列表的 Linq 过滤器

使用 LinqToSql 的 Winforms 应用程序架构

LINQ 查询中的 C# lambda 表达式

.net - 奇怪的 LINQ to SQL .Union() 错误

linq - linq 中的 .edmx 和 .dbml 文件有什么区别?

c# - Linq-To-SQL CreateDatabase 不创建存储过程

c# - Linq-to-SQL 的三元运算符导致问题?

c# - Entity Framework 和 Oracle,Linq where 子句字符串比较在给定函数参数而不是文字时不返回任何记录