我想达到以下...LINQ - Select语句 - 空值不能分配给具有类型System.Int32一个成员是一个非空的值类型
_4S.NJB_Request request =
(from r in db.NJB_Requests
where r.RequestId == referenceId
select r).Take(1).SingleOrDefault();
获取以下例外......
Message:
The null value cannot be assigned to a member with type System.Int32 which is a non-nullable value type.
StackTrace:
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 DAL.SqlDataProvider.MarkNJBPCRequestAsComplete(Int32 referenceId, Int32 processState)
我已验证'referenceId'是否有值。
任何人都知道为什么这会发生在选择语句?
谢谢!
编辑:r.RequestId = NOT NULL诠释,referenceId = INT
你有_4S.NJB_Request类中的其他int32 fieds吗? – BlackICE 2010-03-15 16:27:16
referenceId和r.RequestId是什么类型? – Andrey 2010-03-15 16:28:34
我想你可能需要.FirstOrDefault()而不是.Take(1).SingleOrDefault() – 2010-03-15 16:29:25