В настоящее время у меня есть программа, которая использует OleDb для извлечения данных из таблицы Excel и импорта их в базу данных SQL Server с помощью Entity Framework.
Преодолевая разрыв между OleDb и EF, я помещаю sh данные из таблицы Excel в DataTable
, go в DataTable
, чтобы собрать все данные в одной строке, поместите это в StringBuilder
, разделенные запятыми, а затем превратите этот StringBuilder
объект в массив строк, разделенных запятыми. После этого я вызываю функцию Add
для импорта данных в базу данных с помощью EF.
В коде, показанном ниже, вы можете видеть, что мне нужно вызвать
Name = data[0], Message = data[1]
et c на pu sh данные в базу данных. Есть ли способ вместо этого передать массив строк в класс вместо каждого отдельного параметра и работать с данными там?
public static void Insert(string Sheet, OleDbConnection conn)
{
OleDbCommand command = new OleDbCommand("SELECT Name, Message, Message type FROM [" + Sheet + "$]", conn); //Selects everything inside excel file
DataTable Data = new DataTable();
OleDbDataAdapter adapter = new OleDbDataAdapter(command);
adapter.Fill(Data); //Puts all data inside a DataSet
StringBuilder sb = new StringBuilder();
var context = new DataWarehouseContext();
// Prints out DataSet
foreach (DataRow dataRow in Data.Rows)
{
foreach (var item in dataRow.ItemArray)
{
sb.Append(item);
sb.Append(",");
}
string[] data = sb.ToString().Split(','); //Gets data for each item in vHealth Insert method
context.RvtoolsVHealth.Add(new RvtoolsVHealth { Name = data[0], Message = data[1], MessageType = data[2] });
context.SaveChanges();
}
}
Любые указатели были бы замечательными, спасибо!