In Memory类,而不使用数据库
本文关键字:数据库 Memory In | 更新日期: 2023-09-27 18:28:37
我有一个问题。我想知道如何在Visual Studio 2010中使用MVC 4来利用c#.Net中的内存类。我的意思是说,我不想使用数据库或任何其他外部存储介质,甚至存储库。
我想存储数据,从那个类中检索数据。
我听说过"缓存",但它有自己的局限性。
我也不使用任何类型的存储库,因为使用存储库,我已经使用http://www.edandersen.com/2013/05/30/asp-net-mvc-basics-part-2-viewmodel-to-model-mapping-and-editing/.
你能建议我怎么做吗?
你的目标是什么?
如果数据对于持久性很重要,那么就不能将其存储在内存中。由于多种原因,IIS应用程序可以随时重新启动。数据随后丢失,恕不另行通知。
如果数据是作为缓存的,请使用缓存或静态变量(具有适当的同步)。
您可以使用静态对象实例。例如,假设您有一个User
类:
public class User
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
然后为您的实体创建一个静态容器:
public static class Container
{
static Container()
{
Users = new ConcurrentBag<User>();
}
public static IEnumerable<User> Users { get; set; }
...
}
然后,您可以从代码中的任何位置访问这个静态实例。显然,由于ASP.NET MVC是一个多线程环境,您需要正确地同步对这些变量的访问。例如,使用ConcurrentBag<User>
而不是List<User>
实现。
然后在您的控制器中,您可以访问内存中的数据存储:
public ActionResult Index(int id)
{
var user = Container.Users.FirstOrDefault(x => x.Id == id);
if (user == null)
{
return HttpNotFound();
}
return View(user);
}