在所有今天的场景中,我会推荐使用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的设备。