Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.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# 磁盘数据库存储,最佳实践_C#_Storage_Local_Disk - Fatal编程技术网

C# 磁盘数据库存储,最佳实践

C# 磁盘数据库存储,最佳实践,c#,storage,local,disk,C#,Storage,Local,Disk,如果这个问题对你来说很常见,我道歉,我在这个网站上快速搜索了一下,在谷歌上搜索了几次,没有找到满意的答案 我的问题是, 我现在只做了3-4年的软件开发人员。这似乎是一个足够长的时间来回答这个问题,但在我所有的时间里,我从来没有开发过这样的软件:数据存储的主体不需要在在线数据库中。但这次,我的最新开发只需要将其数据存储到磁盘 实际数据本身是轻量级的。在代码中,主要资产将是一个类,其上只有几个基于字符串的属性,这些属性必须持久化。我最初的想法是简单的序列化。在应用程序关闭时,新资产被简单地序列化并作

如果这个问题对你来说很常见,我道歉,我在这个网站上快速搜索了一下,在谷歌上搜索了几次,没有找到满意的答案

我的问题是,

我现在只做了3-4年的软件开发人员。这似乎是一个足够长的时间来回答这个问题,但在我所有的时间里,我从来没有开发过这样的软件:数据存储的主体不需要在在线数据库中。但这次,我的最新开发只需要将其数据存储到磁盘

实际数据本身是轻量级的。在代码中,主要资产将是一个类,其上只有几个基于字符串的属性,这些属性必须持久化。我最初的想法是简单的序列化。在应用程序关闭时,新资产被简单地序列化并作为文件存储在磁盘上。我还认为,出于备份目的(或者如果它是序列化类的更好选择),XML文件是合适的

我想不出这两种方法有什么明显的缺点,正是这个事实让我公开提出这个问题。根据我的经验,很少有一种解决方案不存在缺点。

序列化(二进制或XML)适用于少量数据。这种方法的问题是当您获得大量数据(可能需要查询)时

如果您在windows平台上并且需要适当的数据库,则可以使用windows-附带的嵌入式数据库引擎。它是交易所和银行的后备商店

是它的.NET包装库

ManagedSent提供对ESENT的托管访问,ESENT是Windows本机的嵌入式数据库引擎。ManagedSent使用作为Microsoft Windows一部分的esent.dll,因此没有额外的非托管二进制文件可供下载和安装


另一个嵌入式数据库选项是。它的最新版本,似乎比以前的版本有了很大的改进


它在功能上等同于使用XML文件、access数据库,甚至纯文本文件,因为您不需要运行Sql Server服务或在应用程序运行的机器上安装任何特殊的东西。

最轻量级的解决方案当然是使用XML和序列化。它的主要优点是非常简单,只需要很少的代码,并且可以使用文本编辑器轻松编辑。另一个优点是可以有多个文件,并且可以很容易地从PC传输到PC

这是一个很好的例子

但是,如果您的应用程序需要大量读取、写入和更改数据,并且只有一个数据源,那么最好使用轻量级数据库。很多人喜欢,而我个人更喜欢


看到这一点,并且。

我一直在一个项目中使用Sqlite,它工作得非常好,而且使用起来也很容易,但在使用Sqlite时要记住的一点是,它是为在单用户环境中使用而设计的,因此,如果你将其用作网站后端的数据库,例如,你很可能会发现它会在最轻微的负载下挣扎

查看C#包装器的链接:

我还使用NHibernate和NHibernate.Linq与数据交互,您可以在此处获得两者兼容的构建:

Linq允许您在Sqlite数据库上使用这些漂亮的Linq查询语法:

var onePiece=来自session.Linq()中的s,其中s.Name==“One Piece”选择s

随着时间的推移:“截至2013年2月,SQL Server Compact Edition已被弃用;虽然Microsoft将继续支持到2021年7月,但没有计划推出新版本或更新。”。所以很快它就会被支持。