2016-03-03 2 views
0

У меня есть сценарий в MVC, где я загружаю файлы Excel с помощью OPEN XML для чтения электронных таблиц, однако я не хочу сохранять эти записи в базе данных, поскольку я выполняю проверку по сравнению с записями, и если проверка прошла успешно, я затем сохраняю запись в базе данных, это по соображениям производительности, так как я могу иметь 1000 записей в таблице Excel, я смог хорошо отредактировать, если сначала сохранить записи в в базе данных я просто прочитал бы их из db по идентификатору, изменил бы, а затем обновил/сохранил изменения. Я не хочу этого делать, мне нужно включить мое приложение для чтения записей в памяти, редактировать, повторно проверять, а затем сохранять только достоверные данные, как я могу это сделать в MVC, см. Мой текущий код ниже, который использует подход к сохранению записей во-первых, чего я хочу избежать.В MVC как я могу редактировать записи в памяти без сохранения в базу данных fisrt

public async Task<ActionResult> Edit(int? id) 
    { 


     if (id == null) 
     { 
      return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
     } 
     CleanSupplierClaim cleanData = await db.CleanSupplierClaims.FindAsync(id); 

     if (cleanData == null) 
     { 
      return HttpNotFound(); 
     } 
     return View(cleanData); 
    } 

// POST: /Claim/Edit/5 
// To protect from overposting attacks, please enable the specific properties you want to bind to, for 
// more details see http://go.microsoft.com/fwlink/?LinkId=317598. 
[HttpPost] 
[ValidateAntiForgeryToken] 

public async Task<ActionResult> Edit([Bind(Include = "Id,Action,Line_Number,Total_Claim,Currency,ClaimReference,ST_Key,Warning,Error_1,Error_2,Error,Domain_Username")] CleanSupplierClaim cleanData) 
{ 
    if (ModelState.IsValid) 
    { 
     if (cleanData.Id == 0) 
     { 
      db.CleanSupplierClaims.Add(cleanData); 
     } 
     else 
     { 
      db.Entry(cleanData).State = System.Data.Entity.EntityState.Modified; 
     } 
     await db.SaveChangesAsync(); 
     //return PartialView(); 
    } 
    return RedirectToAction("RedirectToValidateClaimsView"); 
} 

Спасибо заранее

+0

Насколько я понял, вы правильно: вы хотите загрузить некоторые файлы Excel, а затем вставить их в память и изменить их в своем представлении? Если все в порядке, вы хотите сохранить их в своей БД? – brothers28

+0

Да, это именно то, что я хочу сделать, я не хочу сохранять записи в БД, так как мне нужно их проверить, если они действительны только тогда, я сохраняю их в db, причина в том, что у меня 1000 записей – Papi

ответ

2

HTTP является лицом без гражданства. Вы должны написать данные где-то.

"Где-то" может быть:

  • В данной странице (скрытые поля формы, переменные JavaScript, и т.д.)
  • В печенье (не очень подходит для больших объемов данных)
  • В сессии состояние
  • в статических переменных (возможно, не очень хорошо в веб-приложения для нескольких причин, но вариант, тем не менее)
  • в файле
  • В отдельной базе данных (возможно, локальный файл базы данных SQL для этого приложения или, возможно, база данных документа и т. Д.)
  • В основной базе данных, но в отдельных таблицах (таблицы предназначены для хранения временных данных, было совершено на «реальные» таблицы еще)
  • т.д.

Дело в том, что вам нужно записать данные где-то. Это не должно быть ваших основных таблиц базы данных. Но если разные запросы к веб-приложению должны работать с одними и теми же постоянными данными, тогда эти данные должны быть где-то постоянными.

+0

Хорошее объяснение , вроде этого – brothers28

+0

Я понимаю, что моя проблема в производительности, я возьму подход к записи данных во временную базу данных, я знаю, что это будет рассматриваться как новый вопрос, но знаете ли вы какие-либо методы оптимизации производительности I может использоваться в MVC для сохранения больших данных в базах данных и чтениях и т. д. Любой конкретный, который вы использовали и хорошо работает – Papi

+1

@Papi: «Моя проблема - это умение работать». - Это совсем не то, что было задано в вопросе. Что касается производительности, первый шаг всегда должен измеряться перед оптимизацией. В противном случае вы действительно не оптимизируете, вы просто догадываетесь. Современные базы данных, как правило, довольно быстрые. – David

0

Если вы хотите проверить свои файлы Excel:

  1. Создайте новый класс с именем Validation
  2. Внутри этого класса создать METHODE, где вы можете проверить свои файлы Excel.
  3. Возврат true или false для действительных или недействительных.
  4. Для каждого файла excel вызывается этот метод, и если он действителен, добавьте его в список со всеми вашими действительными файлами excel.
  5. Сохранить все действительные Excel файлы в базе данных

Насколько я не знаю среды, ни Вашим критериям проверки, это трудно для меня, чтобы предоставить вам любой код. Но, возможно, приведенный выше список может помочь вам.

Смежные вопросы