我正在使用.NET Core 2.0和Entity Framework。在此代码的最后一行:
IQueryable<MySpecialObject> specialObjects = _context.MySpecialObject.Where(ss => ss.IsActive == Constants.ISACTIVEFLAG)
.Join(_context.SampleRecord,
ss => ss.SampleRecordId,
sr => sr.SampleRecordId,
(ss, sr) => new { ss, ownerId = sr.CustomerId })
.Select(comb => new MySpecialObject
{
sampleShareId = comb.ss.SampleShareId,
sampleRecordId = comb.ss.SampleRecordId,
ownerName = namedCustomers[comb.ownerId],
sharedWithName = namedCustomers[comb.ss.GuestCustomerId],
createdDate = comb.ss.CreateDate
});
var listOfSpecialObjects = specialObjects.ToList();
我得到了这个例外:
2017-12-12 15:09:59.0643|ERROR|Microsoft.EntityFrameworkCore.Query|An exception occurred in the database while iterating the results of a query for context type 'Models.DataHubCoreContext'.
System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.
at System.ThrowHelper.ThrowKeyNotFoundException()
at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
at lambda_method(Closure , QueryContext , TransparentIdentifier`2 )
at Microsoft.EntityFrameworkCore.Query.ExpressionVisitors.Internal.ProjectionShaper.TypedProjectionShaper`3.Shape(QueryContext queryContext, ValueBuffer valueBuffer)
at Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable`1.Enumerator.BufferlessMoveNext(Boolean buffer)
at Microsoft.EntityFrameworkCore.Storage.Internal.SqlServerExecutionStrategy.Execute[TState,TResult](TState state, Func`3 operation, Func`3 verifySucceeded)
at Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable`1.Enumerator.MoveNext()
at Microsoft.EntityFrameworkCore.Query.Internal.LinqOperatorProvider.ExceptionInterceptor`1.EnumeratorExceptionInterceptor.MoveNext()
什么可能导致Entity Framwork抛出异常?在ToList()方法的文档中,它只说它可以抛出System.ArgumentNullException。我正在使用名为“namedCustomers”的词典,但在下一行代码之前不会抛出异常。