问题:我们已经为客户启动了一个项目,其中包括通常用数据库完成的工作。
但是,客户不希望安装数据库,因为它只是一个小应用程序。 但是,我们打算将代码重用于更大的项目,该项目将使用数据库。
如果我使用XML或SQlite或Access,问题是所有服务器端代码都会有所不同。
我正在向SQlite倾斜,但我不知道。 将数据库添加到MS-Access文件中会是更好的解决方案吗? 如果我将它放入访问数据库,客户是否需要安装MS-Access或仅需要MSFT MDAC?如果我使用Access数据库,那么在Linux下运行Mono也会运行,还是没有MDAC替换?
答案 0 :(得分:8)
我会考虑使用NHibernate,您可以将其连接到SQLite,但稍后可以升级到完整数据库,而无需更改太多代码。如果你不热衷于此,我会直接在XML文件上使用SQLite。
答案 1 :(得分:4)
您无需安装Access即可使用Jet引擎。据我所知,Jet安装了所有最新版本的Windows。您可以使用Jet (Access) with Linux
。与包括SQLite在内的替代方案相比,Jet对数据库管理的要求非常少。
答案 2 :(得分:3)
我会使用SQLite over Access - 对于SQLite,您只需要发送DLL,对于Access,您需要一个安装程序(尽管我认为它内置于最新版本的Windows中)。 SQLite也是一个更好的数据库。
或者您当然可以使用Repository模式或类似方法抽象数据存储机制?如果您要将数据存储在一个文件中,然后使用Linq-To-Objects加载它并从存储库中公开它,那么稍后您可以直接用Linq-to-SQL替换它而不更改任何客户端代码
答案 3 :(得分:2)
在中等信任环境中使用sqlite可能会遇到问题(例如在共享托管中)。如果您对其他解决方案开放,可以考虑尝试VistaDB。它受到所有主要orm(nhibernate,openaccess,entityspaces,subsonic等等)的支持。
答案 4 :(得分:1)
所有最新版本的Windows一直到Windows 7都附带了JET副本(ms-access数据引擎)。因此,您不需要mdac,也不需要安装ms-access。
您甚至可以在干净的Windows框中编写Windows脚本而无需安装任何软件,因此您可以从mdb(ms-access)文件中读取数据。
所以,这里的问题不是安装,因为“JET”(ms-access使用的数据库引擎)无论如何都附带了Windows。
我认为这里唯一的例外或考虑因素是您计划使用64位版本的操作系统并使用进程内64位应用程序吗?
Office 2010有一个64位版本的ms-access,据我所知,还有一个单独的下载用于在64个盒子上安装JET(现在称为ACE)引擎。
我打算只在32位计算机上工作(或在64位盒子上使用32位版本的软件),然后你不需要ms访问,也不需要安装任何东西来读取和使用mdb(ms - 访问文件)。
由于JET附带了所有最新版本的Windows,因此您的决定不会基于安装JET(您不必),您的决定将是其他问题,如果JET符合您的要求。