我已经为我的客户部署了大量软件。主要是Window Forms应用程序。 这是我目前的做法。
我甚至尝试过编写数据库更新脚本。每次程序启动时,它将读取.sql更新文件并在数据库存在时运行它们。这解决了更新数据库列的问题,但是当我的客户抱怨数据错误时,它在我的DEBUGGING工作中没有帮助。那时,我必须亲自前往他们的网站查看。
我发现很难在客户端PC上安装数据库,因为它使我的调试工作非常困难。我正在考虑将我的客户端数据库移动到在线服务器上的主机。但那就是这些限制因素:
答案 0 :(得分:1)
每台客户端PC安装一个数据库可能会非常棘手。我认为你对如何处理目前的问题有一个很好的处理。您目前面临的真正问题似乎是调试。要解决这个问题,您可以采取以下几种方式:
可能还有其他方法,但这些方法很好。至于使用在线数据库,这是一个选项,但它带来了一系列问题。你提到了一对。至于Azure,这是基于云的(在线),因此同样的问题将适用。 SQL CE对您的帮助不会超过您当前的安装。
最重要的是,我建议您研究修复一个问题的方法(如上所列),而不是通过转移到基于Internet的解决方案来创建一整套新问题。我只建议移动到互联网,如果它解决了更大的业务需求(例如,移动性)。做你在网上做的同样的事情可能会让生活变得更加艰难。
回顾下面的评论,因为它们与问题非常相关,如果您选择不需要在机器上进行物理安装的基于文件的数据库,那么您最好的选择可能是在SQLite和SQL CE之间。 Microsoft更好地支持SQL CE,但它是一个更大的包,并且具有比修剪SQLite更少的功能。以下是对差异的良好讨论:
https://stackoverflow.com/questions/2278104/sql-ce-sqlite-what-are-the-differences-between-them
但是,当您开始查看linq2sql时,问题变得更加复杂,因为它是为SQL Server设计的。微软不支持带有linq2sql的SQL CE,虽然有一种解决办法可以使它工作:
http://pietschsoft.com/post/2009/01/Using-LINQ-to-SQL-with-SQL-Server-Compact-Edition.aspx
linq2sql根本不支持SQLite,但有一种方法可以使用linq与SQLite交谈:
该库还支持其他常见数据库,包括MySQL和Firebird。
答案 1 :(得分:1)
根据数据,我建议使用SQL CE。 如果数据不是太多,速度不是主要目标(CE比Express慢)并且您不需要CE不支持的DB功能(例如存储过程)它是更好的选择恕我直言,因为:
此外,客户可以发送他们的SQL CE DB-File进行检查,您无需访问他们的网站。
使用SQL CE和MS Sync FW实现异地同步也相对容易。
答案 2 :(得分:0)