是否有可用于.NET的类似数据库的持久层?

时间:2009-12-23 20:54:33

标签: c# .net persistence

我正在尝试解决具有相对丰富的数据层的应用程序的断开连接操作的问题,并且我发现使用此方法的最自然的方法是使用客户端数据库。但是,我不想安装单独的产品,我不知道是否有任何层可以将类似数据库的持久层链接到应用程序中。有没有人有这方面的经验?是否有涵盖这一领域的良好框架?

6 个答案:

答案 0 :(得分:6)

我会推荐SQLite。它是一个完整的SQL数据库引擎,包含在单个dll中,无需安装或维护,只需与您的应用程序一起提供并在进程中运行。有一个很好的.NET包装器可以很好地集成,并允许您在.NET中创建自定义函数。

http://sqlite.phxsoftware.com/

答案 1 :(得分:4)

如果您不需要关系数据库的强大功能并希望简化对象模型的转换以实现持久性,那么您应该look into DB4O - 它是一个可以在您的客户端上运行并透明地保持您的类的对象数据库

答案 2 :(得分:2)

您可以将NHibernate与sqlite或sqlce数据库一起使用。我们使用sqlce。

答案 3 :(得分:2)

.Net具有强类型数据集,可以很好地实现此目的。 http://msdn.microsoft.com/en-us/library/esbykkzb%28VS.71%29.aspx

答案 4 :(得分:2)

即使您不想安装其他产品,也可以考虑SQL Server Compact Edition。虽然您需要安装它,但它是免费的,并且不安装新的Windows服务。

数据库本身只是每个数据库的单个文件。仍支持LINQ to SQL和LINQ to Entities,您甚至可以获得Windows Mobile版本。

答案 5 :(得分:1)

您是否正在寻找类似数据库的持久层,因为您希望在客户端获得数据库的查询能力,或者在应用程序运行之间是否存在持久性,或者两者兼而有之?

如果你需要两者,或者只需要持久性,那么展示集成数据库库的任何其他答案都会做(如SQL Lite的this one)。

然而,如果您需要的唯一能力是对内存数据执行复杂查询那么我高度建议使用普通LINQ-to-对象,假设您可以使用该选项。