2014-10-28 48 views
-2

我正在开发一个项目,该项目有一个文本文件形式的数据库。 该项目是一个Web服务,它通过Web方法调用来回答来自不同用户的所需数据。 数据库的文本文件的大小会增加,并且可能具有大于100 MB的大小 如何将此数据文本文件加载到我在asp.net中的整个应用程序中,并将来自不同用户的每个请求获取来自内存中加载数据的数据?除此之外,还可以向内存中的此数据库变量添加更多数据,然后将更改的数据保存在内存中以保存到文件中?读取文本数据并存储在应用程序内存中

谢谢 我感谢任何帮助。

+1

你目前在你的任务中面临的具体问题是你自己来实现这个吗?您在这里提出了几个问题,其中一些问题非常广泛。 – 2014-10-28 13:52:50

+0

嗨,谢谢你的关注。我创建了一个名为database的类和一个名为readData()的方法。对于来自不同用户的每个请求,我必须创建数据库对象并调用readData。我想在内存中有一个我的数据库变量的实例,并在每个请求中访问它,是否可以使用Global.asax? – user3173814 2014-10-28 13:54:09

+1

您正在使用文本文件作为数据库?请问为什么? – Tanner 2014-10-28 13:54:28

回答

2

您可以轻松将文本文件读入内存。你可能想把它放在你的Global Application Class(global.asax)的Application_Start函数中。

Application["TheData"] = System.IO.File.ReadAllText(Server.MapPath("~/App_Data/Database.txt")); 

如果您需要重新初始化数据,只需再次运行该代码行,可能是为了响应文件上载。

但是,现在你已经在内存中获得了一个巨大的字符串。你可能需要将它处理成某种结构化的类(并存储它,而不是字符串),然后有回答问题的方法。它可能看起来像这样:

MyDatabase db = MyDatabase.LoadFromText(File.ReadAllText(Server.MapPath("~/App_Data/Database.txt"))); 
Application["TheData"] = db; //probably better to make it a one liner 

顺便说一句,巨大的文本文件是一个坏主意。使用实际的数据库而不是文本文件。它们是为了保存可以改变的数据,并且你可以想出适当的关系结构。

+0

谢谢mason,所以我必须将这些数据加载到Application_Start中,并且对于不同的用户,我可以访问此加载的数据,并且不需要再次加载它,对吗? – user3173814 2014-10-28 14:04:30

+0

@ user3173814 Application_Start是[应用程序启动时运行的函数](http://www.techrepublic.com/article/working-with-the-aspnet-globalasax-file/)。 [Application class](http://stackoverflow.com/questions/5096544/application-vs-session-vs-cache)是所有用户会话之间的共享对象。它与Session类似,但由所有人共享。 – mason 2014-10-28 14:07:07

相关问题