在所有今天的場景中,我會推薦使用SQLite。這是今天使用最多的數據庫。不要將自己綁定到數據庫生態系統。只需go here並搜索「Windows CE(.NET Compact Framework)的預編譯二進制文件」。然後你有一個SQLite.Interop.*.dll
和System.Data.SQLite.dll
。 SQLite.Interop.*.dll
必須放置並部署在您的EXE文件之外。 System.Data.SQLite.dll
是託管包裝器,您必須在項目中引用它。示例:Create SQLite Database and table
SQL Server Compact與大多數移動平臺(如iOS,Android等)不兼容。對舊版目標平臺的微軟支持很差,只讓Windows CE只有SQL Server Compact 3.5 SP2,而你沒有像「LIMIT」這樣的重要SQL函數。由於MS在桌面和Windows CE上使用不同的代碼頁,桌面操作系統(> Windows XP)上生成的數據庫也需要在設備上進行轉換(長時間延遲,當您第一次打開數據庫時)。
這是關於RDA微軟聲明:
由於設計上的限制,遠程數據訪問(RDA)將在未來的版本中刪除。如果您當前正在使用RDA,則應考慮過渡到ADO.NET的Microsoft同步服務。如果您打算在新應用程序中使用RDA,則應考慮合併複製或同步服務。請注意,Sync Services目前僅適用於Windows桌面操作系統。
與數據庫交互的最佳方式就是在服務器上構建數據庫,並將其壓縮(通過System.IO.Compression在桌面和Compact下提供)並將其發送到整個設備。平原和愚蠢。大多數設備的導入性能較差,因此即使您有一個奇特的同步框架,在本地執行導入操作可能會花費太多時間。
要傳輸數據庫,您可以使用WCF服務或僅使用HTTPS GET的任何Web服務器。像這樣:
// ppp_peer is in most cases the active sync connected pc
string url = @"https://ppp_peer/export/database.db.gz";
string html = string.Empty;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
using (Stream stream = response.GetResponseStream())
using (FileStream fs = new FileStream(stream))
{
// Decompress your database here
}
要ORM您POCO對象只是使用類似https://bitbucket.org/twincoders/sqlite-net-extensions
但是,如果你有WLAN接入無處不在,我會考慮與Web服務器寫一個瀏覽器應用程序,並通過手機瀏覽器一起滿足您的需求。請記住,基於Windows CE 5的設備不具備開箱即用的HTML 5支持。如果您有選擇,請考慮切換到基於Android的設備。