SQLite는 테이블은 다음과 같이 선언 :MonoTouch 용 Vici CoolStorage에서 UniqueIdentifier 키를 지원합니까?
CREATE TABLE Note(Id UNIQUEIDENTIFIER, Title TEXT)
제대로 Windows에서 VICI CoolStorage 읽을하지만, MonoTouch에, 다음과 같은 예외가 발생합니다 :
[ERROR] FATAL UNHANDLED EXCEPTION: System.InvalidCastException: Cannot cast from source type to destination type. at Vici.CoolStorage.CSDataProviderSQLite.GetSchemaColumns (System.String tableName) [0x00000] in <filename unknown>:0 at Vici.CoolStorage.CSSchema.CreateColumns() [0x00000] in <filename unknown>:0 at Vici.CoolStorage.CSSchema..ctor (System.Type objType) [0x00000] in <filename unknown>:0 at Vici.CoolStorage.CSSchema.Get (System.Type objectType) [0x00000] in <filename unknown>:0 at Vici.CoolStorage.CSList``1[Store.CoolStorage.Note]..ctor() [0x00000] in <filename unknown>:0
그것은 코드처럼 보이는 유형 ID를 기반으로하는 열의 데이터 유형을 감지합니다. MonoTouch 용 Vici의 CSDataProviderSqlite에서 UNIQUEIDENTIFIER 유형을 처리하지 않습니다.
보낸 사람 CSSqliteConnection.GetSch 에마 :
switch (dbType)
{
case "TEXT": dataType = typeof(string); break;
case "VARCHAR": dataType = typeof(string); break;
case "INTEGER": dataType = typeof(int); break;
case "BOOL": dataType = typeof(bool); break;
case "DOUBLE": dataType = typeof(double); break;
case "FLOAT": dataType = typeof(double); break;
case "REAL": dataType = typeof(double); break;
case "CHAR": dataType = typeof(string); break;
case "BLOB": dataType = typeof(byte[]); break;
case "NUMERIC": dataType = typeof(decimal); break;
case "DATETIME": dataType = typeof(DateTime); break;
}
UNIQUEIDTITIER에 대한 처리기가 없습니다. Vici CoolStorage의 버그입니까? 더 그 이상이 필요한 경우
switch (dbType)
{
case "TEXT": dataType = typeof(string); break;
case "VARCHAR": dataType = typeof(string); break;
case "INTEGER": dataType = typeof(int); break;
case "BOOL": dataType = typeof(bool); break;
case "DOUBLE": dataType = typeof(double); break;
case "FLOAT": dataType = typeof(double); break;
case "REAL": dataType = typeof(double); break;
case "CHAR": dataType = typeof(string); break;
case "BLOB": dataType = typeof(byte[]); break;
case "NUMERIC": dataType = typeof(decimal); break;
case "DATETIME": dataType = typeof(DateTime); break;
case "UNIQUEIDENTIFIER": dataType = typeof(Guid); break;
}
, 당신이 시도해야합니다 : 소스 코드에 액세스 할 수있는 것 같습니다 이후
버그가 아니지만 명시 적으로 지원되지 않습니다. –
@Philippe, MonoTouch에서이 예외에 대한 해결 방법이 있습니까? 감사. – bright