public ActionResult Index()
 {
     //List<TablesAndAttributes> tnaList = new List<TablesAndAttributes>();
     TableContext db = new TableContext("cs_xam");
     //using (AttributeContext db = new AttributeContext("cs_xam"))
     //{
         var userTables = (from t in db.Tables where t.scenario_id == scenarioID select t);
         //foreach (Table model in userTables)
         //{
         //    tnaList.Add(new TablesAndAttributes(model, new List<xam.Models.Attribute>()));
         //}
         //TablesAndAttributes tna = new TablesAndAttributes();
         return View(userTables);
     //}
 }
 public ActionResult EditTable(long id)
 {
     using (TableContext db = new TableContext("cs_xam"))
     {
         if (db.Tables.Any(t => t.id_table == id && t.scenario_id == scenarioID))
         {
             var table = (from t in db.Tables where t.id_table == id select t).First();
             return View(table);
         }
         else
         {
             ModelState.AddModelError("Ошибка", "В вашем сценарии нет такой таблицы.");
             return RedirectToAction("Index");
         }
     }
 }
        public ActionResult EditTable(xam.Models.Table model)
        {
            using (TableContext db = new TableContext("cs_xam"))
            {
                if (db.Tables.Any(t => t.id_table == model.id_table && t.scenario_id == scenarioID))
                {
                    if (ModelState.IsValid)
                    {
                        // нет числа записей
                        if (model.recordsCount == null && model.recordsCount_fn == null)
                        {
                            ModelState.AddModelError("Ошибка", "Должно быть указано точное количество записей или его НЧ.");
                            return View(model);
                        }

                        // и точное, и НЧ
                        if (model.recordsCount != null && model.recordsCount_fn != null)
                        {
                            ModelState.AddModelError("Ошибка", "Должно быть указано или точное количество записей, или его НЧ, но не оба значения сразу.");
                            return View(model);
                        }

                        // проверка НЧ по формату
                        if (!string.IsNullOrEmpty(model.recordsCount_fn) && !Regex.Match(model.recordsCount_fn, @"^\d+;\d+;\d+;\d+$").Success)
                        {
                            ModelState.AddModelError("Ошибка", "Нечёткое число должно быть в формате \"d;d;d;d\", где \"d\" - это целое число. Например: 4;6;9;12");
                            return View(model);
                        }

                        db.Entry(model).State = EntityState.Modified;
                        db.SaveChanges();

                        logger.Info(string.Format("Изменена таблица [{0}]", model.id_table));

                        return RedirectToAction("Index");
                    }
                    else
                    {
                        return View(model);
                    }
                }
                else
                {
                    ModelState.AddModelError("Ошибка", "В вашем сценарии нет такой таблицы.");
                    return View(model);
                }
            }
        }
        public ActionResult DeleteTable(int id)
        {
            try
            {
                using (TableContext db = new TableContext("cs_xam"))
                {
                    if (db.Tables.Any(t => t.id_table == id && t.scenario_id == scenarioID))
                    {
                        var tabl = (from t in db.Tables where t.id_table == id select t).First();
                        db.Tables.Remove(tabl);
                        db.SaveChanges();

                        logger.Info(string.Format("Удалена таблица [{0}]", id));
                    }
                    else
                    {
                        throw new Exception("В вашем сценарии нет такой таблицы");
                    }
                }
            }
            catch (Exception ex)
            {
                logger.Error(string.Format("Не удалось удалить таблицу [{0}]. {1}", id, ex.Message));
                ModelState.AddModelError("Ошибка", string.Format("Не удалось удалить таблицу. {0}", ex.Message));
            }

            //TableContext dbTables = new TableContext("cs_xam");
            //var userTables = (from t in dbTables.Tables where t.scenario_id == scenarioID select t);
            //return View("Index", userTables);
            return RedirectToAction("Index");
        }