asp.net-mvc - MVC 实体框架中的 Oracle TTC 错误
问题描述
我想在带有 Oracle SQL 的实体框架中使用 Model First 工作流。我可以使用 Create Controller 在数据库中创建新元素,但是当我想显示它时,我收到了一条不太详细的 TTC 错误消息:
TTC Error
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Exception: TTC Error
Source Error:
Line 18: public ActionResult Index()
Line 19: {
Line 20: return View(db.VALLALAT.ToList());
Line 21: }
Line 22:
Source File: ...\Controllers\VallalatController.cs Line: 20
每个模型都有这个错误,在 SQL 表中都有数据
[Exception: TTC Error]
OracleInternal.TTC.TTCExecuteSql.ReceiveExecuteResponse(Accessor[]& defineAccessors, Accessor[] bindAccessors, Boolean bHasReturningParams, SQLMetaData& sqlMetaData, SqlStatementType statementType, Int64 noOfRowsFetchedLastTime, Int32 noOfRowsToFetch, Int32& noOfRowsFetched, Int64& queryId, Int32 longFetchSize, Int64 initialLOBFetchSize, Int64[] scnFromExecution, Boolean bAllInputBinds, Int32 arrayBindCount, DataUnmarshaller& dataUnmarshaller, MarshalBindParameterValueHelper& marshalBindParamsHelper, Int64[]& rowsAffectedByArrayBind, Boolean bDefineDone, Boolean& bMoreThanOneRowAffectedByDmlWithRetClause, List`1& implicitRSList, Boolean bLOBArrayFetchRequired) +3350
OracleInternal.ServiceObjects.OracleDataReaderImpl.FetchMoreRows(Int32 noOfRowsToFetch, Boolean fillReader, Boolean returnPSTypes) +1511
Oracle.ManagedDataAccess.Client.OracleDataReader.Read() +1365
System.Data.Entity.Core.Common.Internal.Materialization.Shaper`1.StoreRead() +36
[EntityCommandExecutionException: An error occurred while reading from the store provider's data reader. See the inner exception for details.]
System.Data.Entity.Core.Common.Internal.Materialization.Shaper`1.HandleReaderException(Exception e) +145
System.Data.Entity.Core.Common.Internal.Materialization.Shaper`1.StoreRead() +49
System.Data.Entity.Core.Common.Internal.Materialization.SimpleEnumerator.MoveNext() +41
System.Data.Entity.Internal.LazyEnumerator`1.MoveNext() +112
System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) +387
System.Linq.Enumerable.ToList(IEnumerable`1 source) +58
我的环境:
- Oracle 数据库 10g 企业版 10.2.0.2.0 - 64bi
- 实体框架 6.0
- Oracle.ManagedDataAccess & EntityFramework 18.3
解决方案
耶!我得到了答案。
Visual Studio 为我生成了带有 NCLOB 属性的表。我将 NCLOB 更改为 VARCHAR2,现在终于正确显示了列表。
更新: 不要忘记将 ODP.NET 驱动程序从 18.3 降级到 12.2