当前位置:首页 > 行业动态 > 正文

c# mvc 批量导入数据库表

在C# MVC中,批量导入数据库表可以通过使用Entity Framework或ADO.NET来实现。需要创建一个模型来映射 数据库表,然后通过控制器处理文件上传和数据解析,最后将数据批量插入到数据库中。

在C#的MVC(Model-View-Controller)应用程序中,批量导入数据到数据库表是一个常见的需求,以下将详细介绍如何实现这一功能:

1、准备工作

创建模型:首先需要创建一个与数据库表结构相对应的模型类,如果有一个名为User的数据库表,包含IdNameAge等字段,那么可以创建一个User模型类来表示这个表的数据结构。

配置数据库连接:在Web.config文件中配置数据库连接字符串,以便应用程序能够连接到数据库。

2、创建控制器方法

接收文件上传:在控制器中创建一个方法来处理文件上传请求,可以使用HttpPostedFileBase类来接收上传的文件,可以在控制器中定义一个UploadFile方法,该方法接受一个HttpPostedFileBase类型的参数,用于接收上传的文件。

读取文件内容:根据文件的类型(如CSV、Excel等),使用相应的库来读取文件内容,如果上传的是CSV文件,可以使用CsvHelper库来读取CSV文件中的数据;如果是Excel文件,可以使用EPPlus库来读取Excel文件中的数据。

将数据转换为模型列表:将从文件中读取的数据转换为模型类的实例,并将这些实例添加到一个列表中,这样可以方便后续将数据批量插入到数据库中。

批量插入数据:使用Entity Framework等ORM框架提供的方法,将模型列表中的数据批量插入到数据库表中,可以使用DbContext类的AddRange方法来添加多个实体,然后调用SaveChanges方法来提交更改。

3、错误处理:在批量导入过程中,可能会遇到各种错误,如文件格式不正确、数据验证失败等,需要在代码中添加适当的错误处理逻辑,以便在出现错误时能够及时捕获并处理,同时向用户提供有用的错误信息。

4、示例代码

模型类:假设有一个名为Product的数据库表,包含IdNamePrice等字段,可以创建一个对应的模型类如下:

 public class Product
     {
         public int Id { get; set; }
         public string Name { get; set; }
         public decimal Price { get; set; }
     }

控制器方法:在控制器中创建一个UploadFile方法来处理文件上传和数据导入:

 [HttpPost]
     public ActionResult UploadFile(HttpPostedFileBase file)
     {
         if (file == null || file.ContentLength == 0)
         {
             return View();
         }
         try
         {
             using (var reader = new StreamReader(file.InputStream))
             {
                 var csv = new CsvReader(reader);
                 var records = csv.GetRecords<Product>().ToList();
                 using (var db = new ApplicationDbContext())
                 {
                     db.Products.AddRange(records);
                     db.SaveChanges();
                 }
             }
             return RedirectToAction("Index");
         }
         catch (Exception ex)
         {
             // 记录错误日志或显示错误消息
             return View("Error", new HandleErrorInfo(ex.Message, "UploadFile", "Product"));
         }
     }

视图页面:在视图页面中添加一个文件上传控件,允许用户选择要上传的文件:

 @using (Html.BeginForm("UploadFile", "Product", FormMethod.Post, new { enctype = "multipart/form-data" }))
     {
         <input type="file" name="file" />
         <input type="submit" value="上传" />
     }

通过以上步骤,可以在C#的MVC应用程序中实现批量导入数据到数据库表的功能,在实际应用中,可以根据具体的需求和情况对上述代码进行适当的修改和扩展。

0