我想要将数据库中的数据以 .csv 格式导入,然后将 .csv 导出到我的 SQL Server/Oracle 数据库中。我目前正在使用 ASP.NET Core RC 1。我已经研究了 SQLBulkCopy 类,但问题是它没有移植到 ASP.NET Core 中。
请问有没有其他兼容 ASP.NET Core 的 nuget 包可用?您能告诉我怎么做吗?
请问有没有其他兼容 ASP.NET Core 的 nuget 包可用?您能告诉我怎么做吗?
微软已将SqlBulkCopy添加到.NET Core中,因此您可以将其作为System.Data.SqlClient
NuGet包的一部分引入。我选择使用@MarcGravell的FastMember来处理映射数据的工作,但您并不一定需要。
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;
}
.NET Standard 2.0现在支持许多.NET框架库,这意味着SqlBulkCopy类可以与ASP.NET Core一起使用。 数据集,数据表和SQLBulkCopy将完成批量插入的工作。有关.NETStandard 2.0的更多详细信息,请在此处查找。