gpt4 book ai didi

asp.net-core - 如何在 ASP.NET Core 1.0 中实现批量插入?

转载 作者:行者123 更新时间:2023-12-02 15:44:39 25 4
gpt4 key购买 nike

我想以 .csv 格式从数据库导入数据,并希望将 .csv 导出到我的 SQL 服务器/Oracle 数据库中。我现在正在使用 ASP.NET Core RC 1。我研究了 SQLBulkCopy 类,但问题是它没有移植到 ASP.NET Core。

有人可以告诉我该怎么做吗?或者是否有其他可用的兼容 nuget 包(使用 ASP.NET Core)?

最佳答案

微软已添加SqlBulkCopy到 .NET Core,因此您可以将其作为 System.Data.SqlClient 的一部分引入NuGet 包。我选择使用FastMember由 @MarcGravell 来处理映射我的数据的工作,但您不必这样做。

FastMember 将获取参数集合和对象集合,并从映射到参数集合的对象中提取值。确实简化了代码。

private async Task OutputPerformanceDataToStorage(List<PerformanceData> dataToSave)
{
var storageParameters = new[]
{
nameof(PerformanceData.PerformanceId),
nameof(PerformanceData.IPAddress),
nameof(PerformanceData.ControllerName),
nameof(PerformanceData.ActionName),
nameof(PerformanceData.ActionParameters),
nameof(PerformanceData.ViewPath),
nameof(PerformanceData.TotalRequestTimeInMilliseconds),
nameof(PerformanceData.RequestStartedTimestamp),
nameof(PerformanceData.RequestEndedTimestamp),
nameof(PerformanceData.CreatedDateTime),
};

var sqlCopy = new SqlBulkCopy(this.connectionString, SqlBulkCopyOptions.Default);
sqlCopy.DestinationTableName = "[Performance]";

using (var reader = ObjectReader.Create(dataToSave, storageParameters))
{
await sqlCopy.WriteToServerAsync(reader);
}
}

internal class PerformanceData
{
public Guid PerformanceId;
public double TotalRequestTimeInMilliseconds;
public long RequestStartedTimestamp;
public long RequestEndedTimestamp;
public string IPAddress;
public string ControllerName;
public string ActionName;
public string ViewPath;
public string ActionParameters;
public List<string> ActionParametersList;
public DateTime CreatedDateTime;
}

关于asp.net-core - 如何在 ASP.NET Core 1.0 中实现批量插入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37179413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com