Не удалось загрузить файл Excel из-за того, что "db" не существует в текущем контексте
Я пытаюсь загрузить файл Excel, а затем отобразить и сохранить его в базе данных. Сначала я использую код Entity Framework. Если я отображаю файл, он работает нормально, но если я пытаюсь сохранить его в моем текущем текстовом тексте, я получаю эту ошибку " "db" не существует в текущем контексте. " Любое предложение будет хорошим решением для меня. При отображении я хочу сохранить тот же файл Excel. Если мой подход не верен, пожалуйста, подскажите мне, как сохранить данные в моем объекте на основе". учебный класс. У меня есть файл класса
public class dataextract
{
public string Code { get; set; }
public string Name1 { get; set; }
public string Group1 { get; set; }
}
В текстовом тексте
public class ReadContext : DbContext
{
public ReadContext()
: base("name = ExcelConnection")
{
Database.SetInitializer(new
MigrateDatabaseToLatestVersion<ReadContext,
ReadAndDisplayExcel.Migrations.Configuration>());
}
public DbSet<dataextract> dataext { get; set; }
}
В контроллере
public ActionResult Index(HttpPostedFileBase uploadfile)
{
//List<dataextract> lstStudent = new List<dataextract>();
if (ModelState.IsValid)
{
if (uploadfile != null && uploadfile.ContentLength > 0)
{
//ExcelDataReader works on binary excel file
Stream stream = uploadfile.InputStream;
//We need to written the Interface.
IExcelDataReader reader = null;
if (uploadfile.FileName.EndsWith(".xls"))
{
//reads the excel file with .xls extension
reader = ExcelReaderFactory.CreateBinaryReader(stream);
}
else if (uploadfile.FileName.EndsWith(".xlsx"))
{
//reads excel file with .xlsx extension
reader = ExcelReaderFactory.CreateOpenXmlReader(stream);
}
else
{
//Shows error if uploaded file is not Excel file
ModelState.AddModelError("File", "This file format is not supported");
return View();
}
var conf = new ExcelDataSetConfiguration
{
ConfigureDataTable = _ => new ExcelDataTableConfiguration
{
UseHeaderRow = true
}
};
DataSet result = reader.AsDataSet(conf);
DataTable s1 = result.Tables[0];
reader.Close();
var query = from s in s1.AsEnumerable()
select new
{
Code = s.Field<string>("Code"),
Name1 = s.Field<string>("Name1"),
Group1 = s.Field<string>("Group1")
};
using (ReadContext db = new ReadContext())
{
foreach (var ss in query)//error "'db' does not exist in the current context"
{
db.dataext.Add(ss);
}
db.SaveChanges();
}
return View(s1);
}
}
else
{
ModelState.AddModelError("File","Please upload your file");
}
return View();
}
1 ответ
Решение
using (ReadContext db = new ReadContext())
{
try
{
var query = from s in s1.AsEnumerable()
select new
{
CODE = s.Field<string>("CODE").ToString(),
Name = s.Field<string>("Name").ToString(),
Group = s.Field<string>("Group").ToString()
};
var q1 = query.Select(x => new dataextract
{
CODE = x.CODE,
Name = x.CompanyName,
Group = x.Group,
}).ToList();
foreach (var ss in q1)
{
db.dataext.Add(ss);
}
db.SaveChanges();
}
}