将DataTable转换为实体对象并添加到表

时间:2016-11-09 15:43:29

标签: asp.net-mvc entity-framework

我对Programming / MVC很新,所以对任何不正确的术语表示道歉。

在使用Entity Framework的MVC应用程序中,我正在努力创建一些功能,允许用户上传CSV文件,解析它,并将其添加到我的数据库(首先由代码生成)。

我有一个项目模型,我希望用户能够为特定项目上传可交付成果的CSV文件。然后,我将有一个显示项目详细信息的视图,以及所有可交付物的完整列表。

按照一个非常简单的教程,我在视图中有CSV解析器,它在解析后显示DataTable。 View呈现正常,这就是我正在使用的控制器:

public ActionResult Upload()
    {
        return View();
    }

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Upload(HttpPostedFileBase upload)
    {
        if (ModelState.IsValid)
        {

            if (upload != null && upload.ContentLength > 0)
            {

                if (upload.FileName.EndsWith(".CSV"))
                {
                    Stream stream = upload.InputStream;
                    DataTable csvTable = new DataTable();
                    using (CsvReader csvReader = new CsvReader(new StreamReader(stream), true))
                    {
                        csvTable.Load(csvReader);
                    }
                    return View(csvTable);
                }
                else
                {
                    ModelState.AddModelError("File", "This file format is not supported");
                    return View();
                }
            }
            else
            {
                ModelState.AddModelError("File", "Please Upload Your file");
            }
        }
        return View();
    }

教程:http://techbrij.com/read-csv-asp-net-mvc-file-upload

我现在不能理解我现在如何将这个Datatable放入我的Deliverables表中,同时参考Deliverables所针对的特定项目。例如,代码如何知道CSV文件中的可交付成果是针对Project#123而不是Project#122 ......

我希望能朝着正确的方向努力,并且非常感谢任何协助。

0 个答案:

没有答案