Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net XML vs.SQlite vs.Access_Asp.net_Xml_Ms Access_Sqlite - Fatal编程技术网

Asp.net XML vs.SQlite vs.Access

Asp.net XML vs.SQlite vs.Access,asp.net,xml,ms-access,sqlite,Asp.net,Xml,Ms Access,Sqlite,问题:我们为一位客户启动了一个项目,其中包括通常使用数据库所做的工作 但是,客户不希望安装数据库,因为它只是一个小应用程序。 然而,我们打算在一个更大的项目中重用代码,该项目将使用数据库 问题是,如果使用XML、SQlite或Access,所有服务器端代码都会不同 我倾向于SQlite,但我不知道。 在MS Access文件中添加数据库是更好的解决方案吗? 如果我将其放入access数据库,客户需要安装MS access还是只需要安装MSFT MDAC?如果我使用Access DB,它也会在Li

问题:我们为一位客户启动了一个项目,其中包括通常使用数据库所做的工作

但是,客户不希望安装数据库,因为它只是一个小应用程序。 然而,我们打算在一个更大的项目中重用代码,该项目将使用数据库

问题是,如果使用XML、SQlite或Access,所有服务器端代码都会不同

我倾向于SQlite,但我不知道。 在MS Access文件中添加数据库是更好的解决方案吗?
如果我将其放入access数据库,客户需要安装MS access还是只需要安装MSFT MDAC?如果我使用Access DB,它也会在Linux和Mono下运行,还是没有MDAC替代品?

我会使用SQLite而不是Access-对于SQLite,您只需要提供DLL,对于Access,您需要安装程序(尽管我认为它内置于最新版本的Windows中)。SQLite也是一个更好的数据库


或者您当然可以使用存储库模式或类似模式来抽象数据存储机制?如果要将数据存储在一个文件中,然后将其加载并使用LINQ to Objts将其从存储库中暴露出来,那么稍后您可以在不改变任何客户端代码的情况下直接用LINQ替换SQL,

我会考虑使用,您可以将其挂钩到SQLite,但是可以在以后升级到完整的数据库,而无需更改太多代码。如果您对此不感兴趣,我会直接在XML文件上使用SQLite。

使用Jet引擎不需要安装Access。据我记忆所及,Jet与所有最新版本的Windows一起安装。你可以用。Jet在数据库管理方面的需求与SQLite等替代产品相比非常少。

所有最新版本的windows(一直到windows 7)都附带了Jet(ms access数据引擎)的副本。因此,您不需要mdac,也不需要安装ms access

您甚至可以在没有安装任何软件的情况下在干净的windows机箱上编写windows脚本,从而可以从mdb(ms access)文件读取数据

因此,这里的问题不是安装,因为“JET”(ms access使用的数据库引擎)无论如何都是随windows提供的

我认为这里唯一的例外或考虑是,您是否计划在64位版本的操作系统上工作,并使用进程内64位应用程序

有一个64位版本的ms access for office 2010,据我所知,还有一个单独的下载,用于在64个盒子上安装JET(现在称为ACE)引擎

如果您计划只在32位机器上工作(或在64位机器上使用32位版本的软件),那么您不需要ms access,也不需要安装任何东西来读取和使用mdb(ms access文件)


由于JET附带所有最新版本的windows,您的决定将不会基于安装JET(您不必这样做),您的决定将是其他问题,如果JET满足您的要求。

在中等信任环境中使用sqlite可能会有问题(例如在共享主机中)。如果你对其他解决方案开放,你可以考虑尝试一下。它由所有主要的orm(nhibernate、openaccess、EntitySpace、亚音速等)支持

我已经为这个项目安装了一个安装程序,我认为向Access MDAC添加依赖项不会有太大问题;在访问时被烧毁过多次。虽然如果这是一个像你说的小项目,你可能不会有什么损失。如果你打算在一个更大的项目中使用该代码,尽管我认为存储库层的开销是值得的。我希望你打算向客户收取你所承担的所有额外工作的费用。。。他知道这是因为他不需要数据库。我是在64位的Hasta la Vista机器上开发的。当我安装64位Office2010时,我必须安装MDAC,但它不是开箱即用的。可能是因为我卸载了Office2007,可能是因为它是一台64位计算机,或者是因为预装的JET/ACE已经过时。因此,我认为它应该包含在安装程序中。Windows附带的Jet版本是32位Jet,因此您必须为i386编译,因为32位库不能在纯64位可执行文件中使用。安装A2010或卸载A2007(或安装/卸载任何版本的Access)对Jet没有任何影响,因为它是一个操作系统组件,无法删除。我不会使用仅限Windows的解决方案。如果我的同事这样做就够糟糕了。我不确定,但我认为VistaDB可以在mono上运行。Jet是一个仅限windows的解决方案,所以你想从你最初的问题中删除它吗?@David W.Fenton你能澄清一下这个说法吗?说明你可以用Linux使用Jet。你可能正在读写MDB文件,但是你不使用JET,我不能说我会认为它是可行的解决方案。对像Jet这样复杂的东西进行反向工程不是一项次要的任务,这就是为什么,例如,MDB工具项目从未超越只读访问。此外,您不必使用ORM来获得正确的三层实现。只需确保您的DAL可以轻松替换(例如使用接口),并且BLL中不存在DAL逻辑(不用说表示)。+1表示NHibernate。你不需要ORM,但它使它更容易。