我使用这个代码无法投射型“ServiceStack.OrmLite.OrmLiteDataParameter”的目的为类型“Oracle.DataAccess.Client.OracleParameter”
using (var db = OpenDbConnection())
if (db != null)
db.Run(dbCnx =>
{
var trans = dbCnx.BeginTransaction();
dbCnx.UpdateOnly(new ProtectiveMarkingRequest
{
SecondApproverUserName = request.SecondApproverUserName,
Status = request.Status
},
onlyFields: p => new
{
p.SecondApproverUserName,
p.Status
},
@where: p => p.WorkItemCode == request.WorkItemCode);
}
trans.Commit();
});
更新到servicestack.ormlite.oracle 4.0.52后(从4.0.38),收到以下错误:
System.InvalidCastException是由用户代码 的HResult = -2147467262 消息=无法转换类型“ServiceStack.OrmLite.OrmLiteDataParameter”的目的为类型“的Oracle未处理。 DataAccess.Client.OracleParameter”。 源= Oracle.DataAccess 堆栈跟踪: 在Oracle.DataAccess.Client.OracleParameterCollection.Add(对象OBJ) 在ServiceStack.OrmLite.DbDataParameterExtensions.AddParam(IOrmLiteDialectProvider dialectProvider,IDbCommand的dbCmd,对象的值,类型字段类型) 在ServiceStack。 OrmLite.Oracle.OracleOrmLiteDialectProvider.PrepareUpdateRowStatement(IDbCommand的dbCmd,对象objWithProperties,ICollection的1 updateFields) at ServiceStack.OrmLite.WriteExpressionCommandExtensions.UpdateOnlySql[T](IDbCommand dbCmd, T model, SqlExpression
1 onlyFields) 在ServiceStack.OrmLite.WriteExpressionCommandExtensions.UpdateOnly [T](IDbCommand的dbCmd,T模型,SqlExpression 1 onlyFields) at ServiceStack.OrmLite.OrmLiteWriteExpressionsApi.<>c__DisplayClass7
2.b__6(IDbCommand的dbCmd) 在ServiceStack .OrmLite.OrmLiteExecFilter.Exec [T](IDbConnection dbConn,Func`2 filter) at ECMAPI.Repository.Security.SecurityRepo sitory。 <> SecurityRepository.cs中的c__DisplayClassfb.b__f9(IDbConnection dbCnx):line 1970
任何线索?
的API在OrmLite打开一个交易OpenTransaction() ,我也会删除dB.Run() – mythz
@mythz你能给我举个例子吗? –
我已经添加了一个重写示例的答案。 – mythz