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;
}
}
}
말 그대로이 관련 데이터베이스의 제안 경향이 푸른 데이터베이스에 연결 문자열을 지정하여 문제를 해결할 수
이
는 추가 정보 (?) :
- 나는 또한 작성한 데이터베이스에서 행을 업데이트하는 메소드를 넣으면 제대로 작동합니다.
- 서버 중 2 개에서 EMEM은 테이블이지만 세 번째 서버에서는 작동하지 않는보기입니다.
누구나 어디에서이 문제를 찾을 수 있습니까?
업데이트 : 현재 로컬 데이터베이스와 뷰가 동일하므로 라이브 데이터베이스와 동일해야합니다. 나는 로컬 dev에 사이트를 휴식이 기다리고 있었다하지만하지 않았습니다 :(
나는 이것이 라이브 데이터베이스의보기이지만 dev 데이터베이스의 테이블과 관련이 있다고 생각합니까? –