wtorek, 28 sierpnia 2012

Mapowanie typów SqLite na typy .Net

Mapując tabelę stworzoną w SqLite na obiekt w .NET, należy pamiętać iż w zależności od typu pola, który został zadeklarowany w SQL zostanie on zmapowany na odpowiednik w .NET. Niektóre typy rodzą nieścisłości jak np. typ INT i INTEGER. Wydawałoby się iż oba te typy są mapowane do zwykłego int-a (Int32) - jednak nie jest tak.

W przypadku korzystania z oficjalnego konektora do bazy System.Data.SQLite (http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki) całą listę mapowania typów można znaleźć w klasie SQLiteConvert.

Dostępna tam lista przedstawia się na obecny czas następująco:

Code:
("COUNTER", DbType.Int64)
("AUTOINCREMENT", DbType.Int64)
("IDENTITY", DbType.Int64)
("LONGTEXT", DbType.String)
("LONGCHAR", DbType.String)
("LONGVARCHAR", DbType.String)
("LONG", DbType.Int64)
("TINYINT", DbType.Byte)
("INTEGER", DbType.Int64)
("INT", DbType.Int32)
("VARCHAR", DbType.String)
("NVARCHAR", DbType.String)
("CHAR", DbType.String)
("NCHAR", DbType.String)
("TEXT", DbType.String)
("NTEXT", DbType.String)
("STRING", DbType.String)
("DOUBLE", DbType.Double)
("FLOAT", DbType.Double)
("REAL", DbType.Double)
("BIT", DbType.Boolean)
("YESNO", DbType.Boolean)
("LOGICAL", DbType.Boolean)
("BOOL", DbType.Boolean)
("BOOLEAN", DbType.Boolean)
("NUMERIC", DbType.Decimal)
("DECIMAL", DbType.Decimal)
("MONEY", DbType.Decimal)
("CURRENCY", DbType.Decimal)
("TIME", DbType.DateTime)
("DATE", DbType.DateTime)
("DATETIME", DbType.DateTime)
("SMALLDATE", DbType.DateTime)
("TIMESTAMP", DbType.DateTime)
("BLOB", DbType.Binary)
("BINARY", DbType.Binary)
("VARBINARY", DbType.Binary)
("IMAGE", DbType.Binary)
("GENERAL", DbType.Binary)
("OLEOBJECT", DbType.Binary)
("GUID", DbType.Guid)
("UNIQUEIDENTIFIER", DbType.Guid)
("MEMO", DbType.String)
("NOTE", DbType.String)
("SMALLINT", DbType.Int16)
("BIGINT", DbType.Int64)

W przypadku korzystania ze zwykłego ADO.NET-a (bez ORMa) znajomość tej listy może ograniczyć ilość rzucanych wyjątków błędnego rzutowania.

Mapowania dla innych baz należy szukać albo w dokumentacji prowidera, albo w dokumentacji (dla MS SQL, Oracle i ODBC mapowiania można znaleźć np tutaj: http://msdn.microsoft.com/en-us/library)/4e5xt97a%28v=vs.110%29.aspx

Brak komentarzy:

Prześlij komentarz