【问题标题】:ServiceStack - OrmLite (probably) - Conversion failed when converting from a character string to uniqueidentifierServiceStack - OrmLite(可能) - 从字符串转换为唯一标识符时转换失败
【发布时间】:2015-08-14 08:10:45
【问题描述】:

它正在工作,然后它突然失败了。尝试一些解析但没有运气。 Error Code: SqlException

Message Conversion failed when converting from a character string to uniqueidentifier.

堆栈跟踪

[SalesOrderDetailsGet: 14/08/2015 7:59:29 AM]: [REQUEST: {SalesOrderId:676b44dcb0c245a5a3191cda194b3267}] System.Data.SqlClient.SqlException (0x80131904):从字符串转换为唯一标识符时转换失败。在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) 在 System.Data.SqlClient.SqlConnection.OnError(SqlException 异常,布尔 breakConnection,Action1 wrapCloseInAction) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action1 wrapCloseInAction) 在 System.Data.SqlClient System.Data.SqlClient.SqlDataReader.TryHasMoreRows(Boolean&moreRows) 在 System.Data.SqlClient.SqlDataReader.TryReadInternal(Boolean setTimeout) , Boolean & more) at System.Data.SqlClient.SqlDataReader.Read() at ServiceStack.OrmLite.OrmLiteUtils.ConvertTo[T](IDataReader dataReader, IOrmLiteDialectProvider dialectProvider) at ServiceStack.OrmLite.OrmLiteResultsFilterExtensions.ConvertTo[T](IDbCommand dbCmd, String sql) 在 ServiceStack.OrmLite.OrmLiteReadCommandExtensions.SingleById[T](IDbCommand dbCmd, Object值)在 ServiceStack.OrmLite.OrmLiteReadApi.c__DisplayClass3c1.<SingleById>b__3b(IDbCommand dbCmd) at ServiceStack.OrmLite.OrmLiteExecFilter.Exec[T](IDbConnection dbConn, Func2 过滤器)在 ServiceStack.OrmLite.OrmLiteReadExpressionsApi.Exec[T](IDbConnection dbConn,Func2 filter) at ServiceStack.OrmLite.OrmLiteReadApi.SingleById[T](IDbConnection dbConn, Object idValue) at BookWS.ServiceLogic.Sales.SalesOrderDataProcess.GetSalesOrderById(Guid id) in C:\Users\Carl\Documents\Visual Studio 2013\Projects\BookWS\BookWS\BookWS.ServiceLogic\Sales\SalesOrderDataProcess.cs:line 38 at BookWS.ServiceInterface.SalesOrderServices.Get(SalesOrderDetailsGet request) in C:\Users\Carl\Documents\Visual Studio 2013\Projects\BookWS\BookWS\BookWS.ServiceInterface\Sales\SalesOrderServices.cs:line 40 at lambda_method(Closure , Object , Object ) at ServiceStack.Host.ServiceRunner1.Execute(IRequest 请求,对象实例,TRequest requestDto) ClientConnectionId:0a6a1c79-14e9-4575-9fab-21c542508a78 错误号:8169,State:2,Class:16

获取:

public Object Get(SalesOrderDetailsGet request)
        {
            SalesOrderDataProcess sODP = new SalesOrderDataProcess(Db);
            SalesOrder salesOrderTemp = sODP.GetSalesOrderById(request.SalesOrderId);

数据层:

 public SalesOrder GetSalesOrderById(Guid id)
        {
            return _dbConnection.SingleById<SalesOrder>(id);
        }

运行停止在上面的块

return _dbConnection.SingleById<SalesOrder>(id);

非常感谢。

【问题讨论】:

    标签: servicestack ormlite-servicestack


    【解决方案1】:

    这是一个common SQL Server exception,表示它无法将字符串值转换为唯一标识符(即GUID)。

    返回并确保表中的所有数据都具有 uniqueidentifier 字段的值,并且该值是有效的 GUID。

    【讨论】:

    • 你能告诉我为什么返回 _dbConnection.SingleById(id);返回 _dbConnection.SingleWhere("SalesOrderItemId", id); 时抛出异常;有效吗?
    • @KEIOKRYSHA id 的值是多少?它是有效的指南吗? SalesOrderItemId 是什么 db 字段?
    • 嗨,它是 NEWID() 生成的 GUID。所以我认为它是有效的。 SalesOrderItemId 的字段名称正是 SalsOrderItemId。它一直工作到今天下午,我改为 SingleWhere 让它工作。奇怪。
    猜你喜欢
    • 2013-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-21
    相关资源
    最近更新 更多