如何在不使用数据库的情况下在C#ASP.NET MVC中保存数据?

时间:2018-11-08 19:56:46

标签: c# asp.net-mvc repository

我正在使用Visual Studio 2017应用Code First方法使用ASP.NET MVC开发应用程序。我在模型中有三个类(表),一个名为DataBase的存储库和一个接口IDataBase

我正尝试在不使用db的情况下将数据存储在内存中。我现在不该如何在表格中添加新项目?

这是我的DataBase类(存储库):

public class DataBase : IDataBase
{   
    private List<Proveedor> proveedors;
    private List<Factura> facturas;
    private List<FacturadeArticulo> facturadeArticulos;

    public DataBase()
    {
         this.proveedors = new List<Proveedor>();
         this.facturas = new List<Factura>();
         this.facturadeArticulos = new List<FacturadeArticulo>();
    }

    public Proveedor AddProveedor(Proveedor item)
    {
        // acces db
        if (item == null)  
        {  
            throw new ArgumentNullException("item");  
        }  

        proveedors.Add(item);  
        return item; 
   }
}

我的界面IDataBase

public interface IDatabase
{
    Proveedor Add(Proveedor item);
}

我的控制器

public ActionResult Create(Proveedor provedor)
{
        try
        {
            // TODO: Add insert logic here
            var data = this.db.Add(provedor);

            return RedirectToAction("Index");
        }
        catch
        {
            return View();
        }
}

我现在不介绍如何在不使用数据库的情况下实现Add方法并将数据保存在内存中。

2 个答案:

答案 0 :(得分:0)

仅在这种情况下,实体框架不是为使用内存中存储而设计的。

为此,您需要实现适当的ADO.NET提供程序:https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/data-providers

答案 1 :(得分:0)

  /**You can Save Data in XML file**/

  //You can Save and load time by this method but it's slow process,
   it may crash if data is large and system is slow, it stores data runtime
   so takes RAM, its ok to use for few rows without any problem

  //use the collection for storing data runtime
    List<Person> pers = new List<Person>();
    public class Person
    {
      public string id { get; set; }//1
      public string name { get; set; }//2
      public string bilno { get; set; }//3
      public string mob { get; set; }//4
      public DateTime dt { get; set; }//5
    }  


    string path=@"c:\.....";
    void save()
    {
        XmlDocument xdoc = new XmlDocument();
        xdoc.Load(path + @"\data.xml");
        XmlNode xnode = xdoc.SelectSingleNode("Items");
        xnode.RemoveAll();

        foreach (Person i in pers)
        {
            XmlNode xtop = xdoc.CreateElement("Item");

            XmlNode x1 = xdoc.CreateElement("a");
            XmlNode x2 = xdoc.CreateElement("b");
            XmlNode x3 = xdoc.CreateElement("c");
            XmlNode x4 = xdoc.CreateElement("d");
            XmlNode x5 = xdoc.CreateElement("e");


            x1.InnerText = i.id;
            x2.InnerText = i.name;
            x3.InnerText = i.bilno;
            x4.InnerText = i.mob;
            x5.InnerText = i.dt.ToFileTime().ToString();

            xtop.AppendChild(x1);
            xtop.AppendChild(x2);
            xtop.AppendChild(x3);
            xtop.AppendChild(x4);
            xtop.AppendChild(x5);

            xdoc.DocumentElement.AppendChild(xtop);
        }
        xdoc.Save(path + @"\data.xml");
    }
    void load()
    {
        XmlDocument xdoc = new XmlDocument();
        xdoc.Load(path + @"\data.xml");
        foreach (XmlNode xnode in xdoc.SelectNodes("Items/Item"))
        {
            Person p = new Person();
            p.id = xnode.SelectSingleNode("a").InnerText;
            p.name = xnode.SelectSingleNode("b").InnerText;
            p.bilno = xnode.SelectSingleNode("c").InnerText;
            p.mob = xnode.SelectSingleNode("d").InnerText;
            p.dt = DateTime.FromFileTime(Convert.ToInt64(xnode.SelectSingleNode("e").InnerText));

        }
    }