Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.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
C# 是否有使用MS Access(用于原型制作)的ORM?_C#_Ms Access_Orm - Fatal编程技术网

C# 是否有使用MS Access(用于原型制作)的ORM?

C# 是否有使用MS Access(用于原型制作)的ORM?,c#,ms-access,orm,C#,Ms Access,Orm,我正处于项目的早期阶段,目前还不清楚我们是否需要一个“真正的”数据库(即SQL Server等)。所以我一直在使用MS Access做一些原型设计,到目前为止效果很好。(在C#/VS2008/.Net 3.5/MS-Access 2000中开发) 然而,对象关系阻抗失配已经变得令人讨厌,并且随着项目的发展只会变得更糟 我还没有找到一个能与MS Access一起工作的ORM。有什么建议吗 编辑-跟进 我们最终使用了Fluent NHibernate,主要是因为它将我们的对象模型自动映射到关系数据库

我正处于项目的早期阶段,目前还不清楚我们是否需要一个“真正的”数据库(即SQL Server等)。所以我一直在使用MS Access做一些原型设计,到目前为止效果很好。(在C#/VS2008/.Net 3.5/MS-Access 2000中开发)

然而,对象关系阻抗失配已经变得令人讨厌,并且随着项目的发展只会变得更糟

我还没有找到一个能与MS Access一起工作的ORM。有什么建议吗

编辑-跟进
我们最终使用了Fluent NHibernate,主要是因为它将我们的对象模型自动映射到关系数据库,这对我们来说是一个巨大的胜利。我们发现的大多数FNH代码示例都使用SQLite,这非常有效,我们打算将其用于生产数据库。(应用程序是一个桌面科学数据收集和分析程序包)。

不能给你一个问题的答案,但是你可能想考虑以下选项之一:

  • SQL Server Express:是免费的,并且与完整的SQL Server兼容
  • :也是免费的,不需要任何部署/安装,不支持所有功能(例如,无存储过程)

MSAccess文件可以设置为Windows计算机上的ODBC源。几乎任何ORM都允许您使用ODBC。这是一个关于如何设置的快速教程,它是针对Win2k概述的,但对于XP+的过程是相同的。您还需要在机箱上安装

NHibernate似乎也有MSAccess的本地支持,请参阅。不过我从来没用过。它也有一个。许多其他人也支持ODBC

再一次,正如其他人所说。。MSAccess不可缩放时段。安装一个真正的数据库服务器相当容易,所以我建议像其他人一样使用SQLServerExpress,甚至MySQL或Postgre,任何更容易设置的都可以


如果这是一个您打算部署到客户机的应用程序,每个客户机都有自己独特的数据库,我建议您完全使用另一种解决方案。SQLite在每个应用程序的基础上为您提供数据库功能。如果您有一个中央数据库服务器,前面提到的解决方案之一将是最好的。

在这个阶段,如果您不确定是否需要“真正的”数据库,我将跳过MS Access,直接转到sql server express。它是免费的,仍然允许你做你需要做的一切


另外,如果您以后决定需要进行扩展,那么您可以毫不费力地进行扩展。

选择Access数据库引擎是一个不错的选择时,只有一种情况:使用Access表单构建自包含的Access应用程序时(尽管首先选择使用Access是一个值得怀疑的选择;)


VS2008最适合使用的数据库引擎是SQL Server,您将很容易找到一个适合使用SQL Server的ORM。

我建议您使用类似Microsoft SQL Server或PostgreSQL的工具进行原型设计。如果您不想学习特定的SQL语法并安装用于设计数据库模式的特殊工具,可以使用ORM从持久类声明自动生成数据库模式。无论如何,这种方法对于原型设计是非常有效的。

LLBLGen与Access一起工作

Access只是一个坏主意。我相信微软只在Office中提供了让老用户满意的访问权限

即使你找到了一个可以与Access数据库一起工作的ORM,除了少数例外,你也将自己锁定在一个可能无法与真正的数据库引擎一起开箱即用的利基工具中。如果您决定稍后切换到一个真正的数据库引擎,那么您不仅需要迁移数据库,还需要切换到另一个ORM

。比较文档还提到了其他数据存储的一些问题,包括访问

如果您真的关心能够安装SQLServer Express,请考虑SQLServer Cys:

  • 它可以链接到您的可再发行应用程序。无需安装服务(安装应用程序期间可能需要管理员权限);安装应用程序时,一切都会得到妥善处理。如果您需要数据驻留在用户的机器上而不是服务器上,这是最有意义的,并且最类似于使用Access

  • >P>它不如Express强大(不支持视图、触发器、存储过程,我认为这是一个要求)

  • 可以很容易地扩展到Express或其他SQL Server版本

  • 适用于平板电脑、移动设备等占地面积小的安装

在设计任何应用程序时,请始终牢记可伸缩性。如果你的应用程序成功了,你不希望仅仅因为之前选择了错误的工具而不得不编写一个PHP->C++编译器

当我们在做时:

Access(或者,在本例中是Jet引擎,它是将Access数据库与.NET应用程序集成时真正要使用的部分)的一个大问题是没有处理数据请求的“服务器”。托管在应用程序中的引擎必须直接读取和写入包含数据库的磁盘上的文件。每当发生这种情况时,必须锁定文件以防止并发写入。随着用户数量的增加,脏读变得越来越常见,数据库损坏的可能性也越来越大

想象一下,在一家大餐馆里,每个顾客都试图同时进入厨房,写下他们的订单或取回他们的食物。这将导致混乱。那里会有很多破盘子,厨房会很乱,你会很幸运地得到你点的任何一种可以食用的食物。对于一个客户,这可能很好。5个,嗯,也许。有两万零五十一万?没有那么多

因此,餐饮业引入了服务员和经理,他们将IO缓冲到厨房。数据库服务器应用程序执行一些操作