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/.

你能建议我怎么做吗?

In Memory类,而不使用数据库

你的目标是什么?

如果数据对于持久性很重要,那么就不能将其存储在内存中。由于多种原因,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);
}