首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ORA-01453: SET TRANSACTION必须是具有LLBLGENPRO的transaction的第一条语句

ORA-01453: SET TRANSACTION必须是具有LLBLGENPRO的transaction的第一条语句
EN

Stack Overflow用户
提问于 2014-02-12 07:03:10
回答 2查看 3.5K关注 0票数 3

我已经在谷歌,LLBLGenPro论坛,甲骨文文档中搜索过每一个地方,我已经成功地在甲骨文中执行了潜在的insert语句,并且它是有效的。我不知道如何进一步调试它。

下面是我用来更新LLBLGENPRO实体的代码

代码语言:javascript
复制
    using (var adapter = new DataAccessAdapter(MyConnectionString))
    {
        adapter.SaveEntity(MyCustomEntityObject);
    }

错误消息:

代码语言:javascript
复制
Test method MyTest123 threw exception: 
System.Data.OracleClient.OracleException: ORA-01453: SET TRANSACTION must be first statement of transaction

堆栈跟踪:

代码语言:javascript
复制
    at System.Data.OracleClient.OracleConnection.CheckError(OciErrorHandle errorHandle, Int32 rc)
   at System.Data.OracleClient.OracleCommand.Execute(OciStatementHandle statementHandle, CommandBehavior behavior, Boolean needRowid, ref OciRowidDescriptor rowidDescriptor, ref ArrayList resultParameterOrdinals)
   at System.Data.OracleClient.OracleCommand.ExecuteNonQueryInternal(Boolean needRowid, ref OciRowidDescriptor rowidDescriptor)
   at System.Data.OracleClient.OracleCommand.ExecuteNonQuery()
   at System.Data.OracleClient.OracleTransaction..ctor(OracleConnection connection, IsolationLevel isolationLevel)
   at System.Data.OracleClient.OracleInternalConnection.BeginOracleTransaction(IsolationLevel il)
   at System.Data.OracleClient.OracleInternalConnection.BeginTransaction(IsolationLevel il)
   at System.Data.OracleClient.OracleConnection.BeginDbTransaction(IsolationLevel isolationLevel)
   at System.Data.Common.DbConnection.BeginTransaction(IsolationLevel isolationLevel)
   at SD.LLBLGen.Pro.ORMSupportClasses.DataAccessAdapterBase.CreateNewPhysicalTransaction()
   at SD.LLBLGen.Pro.ORMSupportClasses.DataAccessAdapterBase.StartTransaction(IsolationLevel isolationLevelToUse, String name)
   at SD.LLBLGen.Pro.ORMSupportClasses.DataAccessAdapterBase.SaveEntity(IEntity2 entityToSave, Boolean refetchAfterSave, IPredicateExpression updateRestriction, Boolean recurse)
   at SD.LLBLGen.Pro.ORMSupportClasses.DataAccessAdapterBase.SaveEntity(IEntity2 entityToSave)
   at MyTest123() in MyTest123: line 289
EN

回答 2

Stack Overflow用户

发布于 2014-02-16 18:41:21

我能想到的唯一一件事是,你可以在这段代码中使用System.Transactions,除此之外,它应该可以正常工作(它确实可以,我们不能在这里重现你的错误)。

顺便说一句,在我们的论坛上发布llblgen pro问题会更有效率,这样我们就可以马上拿到它们。

票数 1
EN

Stack Overflow用户

发布于 2014-02-12 07:50:58

以下是一些想法:

  • 您是在编写此代码之前创建实体的,因此您没有该对象的任何数据库连接。我见过的一些持久性模式首先需要一个数据库连接,然后使用该连接创建实体作为工厂
  • ,一些线程将此归因于试图更改事务上的数据库隔离级别。您应该检查DataAccess的参数,看看它是否有一些隔离级别设置
  • 在尝试持久化您的对象之前,在连接上执行回滚如何?

祝好运!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21715054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档