2014-01-16 32 views
2

我开发了一个ServiceStack API,使用基于SQL Server的ORMLite。该应用完美地指向我的本地SQL数据库和Azure数据库。快乐的时光!将工作ServiceStack迁移到活动原因无法将'System.Byte'类型的对象转换为键入'System.String'

我现在已经尝试将此解决方案移至活动服务器,该服务器拥有相同数据库的本地副本,并且获得了奇怪的结果。错误是:

Error Code: InvalidCastException 
Message: Unable to cast object of type 'System.Byte' to type 'System.String'. 
[EMEM: 1/16/2014 11:49:29 AM]: [REQUEST: {Equipment:DP112}] 
System.InvalidCastException: Unable to cast object of type 'System.Byte' to type 'System.String'. at lambda_method(Closure , Object , Object) at 
ServiceStack.OrmLite.OrmLiteDialectProviderBase`1.SetDbValue(FieldDefinition fieldDef, IDataReader dataReader, Int32 colIndex, Object instance) at 
ServiceStack.OrmLite.ReadExtensions.ExprConvertToList[T](IDataReader dataReader) at ServiceStack.OrmLite.OrmLiteResultsFilterExtensions.ExprConvertToList[T](IDbCommand dbCmd, String sql) at 
ServiceStack.OrmLite.ReadConnectionExtensions.Exec[T](IDbConnection dbConn, Func`2 filter) at 
ViewPoint.EquipmentService.Get(EMEM request) at 
ServiceStack.Host.ServiceRunner`1.Execute(IRequest request, Object instance, TRequest requestDto) 

我检查了数据库模式,他们看起来完全相同。

这是对3个数据库中的2个非常高兴但不是第3个的代码。

public object Get(EMEM request) 
    { 
     var dbFactory = new OrmLiteConnectionFactory(WebConfigurationManager.ConnectionStrings["db"].ToString(), SqlServerDialect.Provider); 
     using (IDbConnection db = dbFactory.OpenDbConnection()) 
     { 
      if (request.Equipment == null) 
      { 
       List<EMEM> results = db.Select<EMEM>(); 
       return results; 
      } 
      else 
      { 
       List<EMEM> results = db.Select<EMEM>(p => p.Where(ev => ev.Equipment == request.Equipment)); 
       return results; 
      } 

     } 
    } 

我可以从字面上通过这往往表明它的数据库相关的Azure数据库指向连接字符串解决问题

额外信息(?):

  1. 我也写了一put方法更新数据库中的一行并且工作正常。
  2. 在2台服务器上,EMEM是一张桌子,但在第三台服务器上,它不起作用,它是一个View。

任何人都可以建议从哪里开始寻找这个问题?

更新:我现在已经在我的本地开发数据库上创建了一个视图,所以它现在应该与实时数据库相同。我期待这打破了本地开发的网站,但它有没有... :(

+0

我认为这是一个关于实时数据库的视图,但开发数据库上的表? –

回答

1

BINGO!定了!

它链接到搜索,但它不是视图的错.. ..

有人寻找与对大部分值的不同的数据类型的表。该演示表我的工作对把所有的列设置为字符串!

所以,看的出来,当人家给你“演示表,具有与现场相同的数据”来开发。

他们并不总是相同的!

HTH

+0

我希望demis和斯科特没有看到这个。 –

相关问题