2014-01-16 2 views
2

SQL Server 기반의 ORMLite를 사용하여 ServiceStack API를 개발했습니다. 응용 프로그램은 내 로컬 SQL 데이터베이스와 Azure 데이터베이스를 완벽하게 가리 킵니다. 행복한 날들!ServiceStack을 라이브로 마이그레이션하는 중 '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 개에서 아주 행복하게 작동하지만 세 번째는 작동하지 않는 코드입니다.

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; 
      } 

     } 
    } 
말 그대로이 관련 데이터베이스의 제안 경향이 푸른 데이터베이스에 연결 문자열을 지정하여 문제를 해결할 수

는 추가 정보 (?) :

  1. 나는 또한 작성한 데이터베이스에서 행을 업데이트하는 메소드를 넣으면 제대로 작동합니다.
  2. 서버 중 2 개에서 EMEM은 테이블이지만 세 번째 서버에서는 작동하지 않는보기입니다.

누구나 어디에서이 문제를 찾을 수 있습니까?

업데이트 : 현재 로컬 데이터베이스와 뷰가 동일하므로 라이브 데이터베이스와 동일해야합니다. 나는 로컬 dev에 사이트를 휴식이 기다리고 있었다하지만하지 않았습니다 :(

+0

나는 이것이 라이브 데이터베이스의보기이지만 dev 데이터베이스의 테이블과 관련이 있다고 생각합니까? –

답변

1

빙고! IT를 고정!

IT가보기에 연결되었다, 그러나보기의 잘못이 아니었다 .. ..

보기는 대부분의 값에 대한 다른 데이터 유형으로 테이블에보고 있었다. 나는에 일하는 데모 테이블의 모든 열을 문자열로 설정했다!

명이 당신을 줄 때, 밖을 내다 "데모 테이블, 라이브와 동일한 데이터로"개발하십시오.

그들은 항상 동일하지 않습니다 !!

HTH

+0

나는 demis와 scott가 이것을 보지 않았 으면 좋겠다. –

관련 문제