使用CSV文件

时间:2017-02-14 15:21:11

标签: c# sql-server asp.net-mvc csv

我有一个包含所有产品的CSV文件,我在新类中有一个方法将它们转换为C#Product对象,这些对象存储在IEnumerable类型的变量中:

public class ReadCSVFile
{
    public List<Product> ProductsList;

    public ReadCSVFile()
    {

        var path = @"/Content/TrendyDinersLimited_Self_ProductUpdateTemplate.csv";

        var CSVProducts = from line in File.ReadAllLines(path).Skip(1)
                          let columns = line.Split(',')
                          select new Product
                          {
                              Id = int.Parse(columns[0]),
                              Name = columns[1],
                              Price = int.Parse(columns[4])
                          };
    }
}

我的问题是,既然我有CSV文件中的产品列表,我应该如何将它们填充到我的数据库中(作为一次性导入)?通常,管理员首先创建一个类别,然后单击一个类别来添加产品。

我在Visual Studio中使用ASP.NET MVC模板,我有三个主要控制器:HomeController(显示类别和产品),CategoryController(管理员授权),ProductController(管理员授权)。我还使用直接连接字符串到Microsoft SQL Server。

2 个答案:

答案 0 :(得分:3)

就个人而言,我会使用Dapper.Net来做这样简单的事情。

如果使用Dapper.Contrib(https://www.nuget.org/packages/Dapper.Contrib/) 您可以使用表格和关键属性来装饰您的课程,以使自己的生活更轻松

class PaymentAdmin(VersionAdmin, admin.ModelAdmin):
    def change_view(self, request, object_id, extra_context=None):
        return HttpResponseRedirect('/admin/sales/invoice')

然后你可以像这样插入

[Table ("Products")]
public class Product
{
    [Key]
    public int Id { get; set; }
    public string Name { get; set; }
    public int Price { get; set; }
}

答案 1 :(得分:2)

你有两个选择。如果要将代码编写为一次性导入实用程序,则可以直接连接到SQL Server以插入数据。

30 days

SQL server connection strings

的示例

但是如果你想要更易于维护的东西,你可以使用EF6作为你的ORM层。 请阅读这篇解释如何get started with EF6 and existing database

的文章