2012-06-17 62 views
0

即將發佈的對WinRT構建的sqlite3支持,Mono.Data.Sqlite庫是否會實現DbConnection/SqliteConnection和DbCommand/SqliteCommand?Mono.Data.Sqlite.dll能夠與sqlite3.dll一起用於WinRT嗎?

我知道(或者至少找不到任何引用)Metro/WinRT不包含System.Data.Common命名空間。

我正在開發一個跨平臺的應用程序,它使用一個sqlite數據庫,並希望至少有一個數據庫層的總重用。另外,CSharp-Sqlite還沒有sqlite的所有功能。

我知道csharp-sqlite庫目前支持WinRT,但在開發中依賴較少的實體會很好。我現在將不得不依靠桌面/ iOS/Android的Xamarin/Mono和WinRT/WP/Silverlight的CSharp-Sqlite。 如果sqlite3.dll本來支持WinRT,那麼Mono.Data.Sqlite.dll可以呢?

也許在WinRT支持sqlite3後,這些傢伙可以找到自己的方式來支持Silverlight和Windows Phone? :)

任何接受者?

回答

1

這並不回答你的問題,但可能會解決你的問題。

blog post由Tim Heuer豪雅有關WinRT的支持SQLite的規定:

可能有人會問System.Data.Sqlite,這不能被使用,因爲ADO.NET的依賴是不是一個組成部分的.NET Framework核心配置文件。

因此,雖然現在可以在WinRT Metro風格的應用程序中使用本機SQLite二進制文件,但不支持託管的ADO-NET驅動程序(System.Data.SQLite)。 Tim建議使用輕量級的sqlite-net C#包裝器,這是一個精簡的ORM包裝器,可以通過P/Invoke訪問本地SQLite庫。 sqlite-net肯定適用於Mono,包括MonoTouch和Android版Mono。

版本5之前的Windows Phone和Silverlight是一個不同的問題 - 通常不支持本地代碼,但sqlite-net也可以與純粹管理的csharp-sqlite實現一起使用,這樣可以讓您保持單個前端庫,不同的後端在這些平臺上。

+0

感謝您的支持。我知道csharp-sqlite使用System.Data.Ersatz庫中的一個虛擬System.Data.Common命名空間。 Mono.Data.Sqlite會做這樣的事嗎?我實際上正在研究類似的庫,但我選擇使用Mono.Data.Sqlite提供的SqliteCommand和SqliteConnection實現,而不是重新實現它們。 – Matthew

+0

這確實會使需求稍微大一些,但我認爲好處大於成本 - 例如存在問題https://github.com/praeclarum/sqlite-net/issues/67:BeginTransaction/Commit無法嵌套。使用SqliteConnection的Mono.Data.Sqlite實現時,不會發生此問題。 – Matthew

+0

這是一件小事,但它確實有助於減少所需的維護,因爲核心庫被維護爲sqlite,Mono的.NET包裝程序,我只需擔心ORM。 – Matthew