У меня происходит очень странная вещь, и я не могу понять причину.Я импортирую электронную таблицу, используя OleDbConnection, в таблицу данных.Затем я вставляю данные, читая строки данных в базу данных SQL.Странная часть, когда я делаю это со своей локальной машины в режиме отладки в производственную базу данных, это, кажется, работает просто отлично.Пример: электронная таблица имеет 733 строки и 733 строки импортированы.Но когда я развертываю приложение в рабочей среде и запускаю тот же код в той же базе данных, импортируется только 496 строк.У кого-нибудь есть мысли по этому поводу?
private readonly FulfillmentContext db = new FulfillmentContext();
private readonly string username = HttpContext.Current.User.Identity.GetUserName();
private readonly DataTable dt = new DataTable();
readonly UserRepository userRepository = new UserRepository();
public void ImportLocations(HttpPostedFileBase file)
{
string filePath = string.Empty;
string fileName = string.Empty;
string GUI = Guid.NewGuid().ToString();
if (file != null)
{
string path = HttpContext.Current.Server.MapPath("~/Content/Upload/");
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
filePath = path + Path.GetFileName(file.FileName);
fileName = Path.GetFileName(file.FileName);
string extension = Path.GetExtension(file.FileName);
file.SaveAs(filePath);
string conString = string.Empty;
switch (extension)
{
case ".xls": //Excel 97-03.
conString = ConfigurationManager.ConnectionStrings["Excel03ConString"].ConnectionString;
break;
case ".xlsx": //Excel 07 and above.
conString = ConfigurationManager.ConnectionStrings["Excel07ConString"].ConnectionString;
break;
}
conString = string.Format(conString, filePath);
using (OleDbConnection connExcel = new OleDbConnection(conString))
{
using (OleDbCommand cmdExcel = new OleDbCommand())
{
using (OleDbDataAdapter odaExcel = new OleDbDataAdapter())
{
cmdExcel.Connection = connExcel;
//Get the name of First Sheet.
connExcel.Open();
DataTable dtExcelSchema;
dtExcelSchema = connExcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
string sheetName = dtExcelSchema.Rows[0]["TABLE_NAME"].ToString();
connExcel.Close();
//Read Data from First Sheet.
connExcel.Open();
cmdExcel.CommandText = "SELECT * From [" + sheetName + "]";
odaExcel.SelectCommand = cmdExcel;
odaExcel.Fill(dt);
connExcel.Close();
}
}
}
InsertRecords(fileName);
}
}
private void InsertRecords(string fileName)
{
var user = userRepository.GetCurrentUser();
try
{
foreach (DataRow row in dt.Rows)
{
string zipCode = FormatZipcode.Format(row[9].ToString());
db.Locations.Add(new Location
{
UserId = user.Id,
LocationName = row[0].ToString() ?? "",
LocationId = row[1].ToString() ?? "",
LocationType = row[2].ToString() ?? "",
DistributionCenter = row[3].ToString() ?? "",
OpenDate = row[4].ToString() ?? "",
Address1 = row[5].ToString() ?? "",
Address2 = row[6].ToString() ?? "",
City = row[7].ToString() ?? "",
State = row[8].ToString() ?? "",
Zipcode = zipCode ?? "",
Country = row[10].ToString() ?? "",
FileName = fileName ?? "",
Date = System.DateTime.Now
});
}
db.SaveChanges();
}
catch (Exception e)
{
Debug.WriteLine(e.Message);
throw;
}
}