2010-05-03 15 views
6

Bir sonraki projem için SQLite kullanmayı düşünüyordum, ancak uygun datetime ve bit veri türlerinden yoksun gibi görünüyor.Bir ORM'in, bir SQLite sütununun tarih veya zaman içerdiğini belirleme yolu var mı?

C# sınıfları oluşturmak için DbLinq (veya başka bir ORM) kullanırsam, özelliklerin veri türleri "aşağılık" olur mu? Tarih-saat verileri, string veya double türünde özelliklerine yerleştirilecek mi? Boolean verileri, int türünde özelliklere mi yerleştirilecek?

Evet ise, bunun sonuçları nelerdir? Daha spesifik veri türleri ile ikinci sınıf katmanları yazmam ve bir takım dönüşümler ve dökümler yapmam gereken bir senaryo tasarlıyorum ama belki de korktuğum kadar kötü değil. Bu ya da benzer bir senaryo ile ilgili herhangi bir deneyiminiz varsa, bunu nasıl ele aldınız?

cevap

1

SQLite kendisi sadece beş veri türlerini tanır SqlLite tarafından desteklenmektedir. Ama istediğiniz herhangi tür adı beyan sağlar, böylece

CREATE TABLE SomeTable (
    TimeAdded DATETIME, 
    SomeFlag BOOLEAN 
); 

yazıp ORM tipleri istediğiniz şekilde yorumlamak olabilir.

SQLite çevresinde bir C++ sarmalayıcı yazdım ve tüm veritabanı değerlerini bir varyant türüyle temsil etmenin farklı yaklaşımını kullandım. Bu varyant, farklı türler arasında dönüşüm sağlar, bu nedenle SqlValue("2010-05-03 01:01:04").AsTimestamp() beklenen zaman damgası nesnesini verir.

+0

Sadece "datetime" ve "bit" kullanarak veri türleri DbLinq ile hile yaptı, teşekkürler. – devuxer

0

System.Data.SQLite kullanıyorum ve VS2008'deki Tasarım araçlarını kullanıyorum, bu bana DateTime ve Bit veri türü veriyor. DbLinq hakkında fazla bir fikrim olmamasına rağmen. NULL, INTEGER, REAL, TEXT ve BLOB: Ama DateTime ve Bit veri türleri

0

System.Data.SQLite ADO.NET sağlayıcı, belirli bir tablodaki sütunlarla ilgili çeşitli meta verileri almanıza olanak veren bir SQLiteMetaDataCollectionNames sınıfı içerir.

Her sütunun 'ipucu' veri türünü (SQLite katı yazmayı zorlamaz) açıklayan bir 'DataTypes' özelliği içerir. Bunun kullanılması, ORM'nin daha sonra eşdeğer C# türüne gerekli dönüşümü gerçekleştirmesini sağlar.

0

Zend Framework'de SQLite için bir bağdaştırıcı üzerinde çalıştım.

Bir SQLite tablosu için meta veri ve veri türleri almak için PRAGMA TABLE_INFO(<tablename>) kullandım ve çıktılarını ayrıştırdım.

İlgili konular