我想達到以下...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