private void Validate(MetadataEntityAttributeModel model)
 {
     if (model.TypeId == (byte) AttributeType.Value)
     {
         if (string.IsNullOrEmpty(model.Type))
             ModelState.AddModelError("Type", "Требуется поле Тип колонки.");
     }
     else
     {
         if (!model.ReferencedEntityId.HasValue)
             ModelState.AddModelError("ReferencedEntityId", "Требуется поле Объект.");
     }
 }
 private void Validate(DBEntities context, MetadataEntityAttributeModel model)
 {
     if (model.TypeId == 0)
     {
         string res = MetadataEntityAttributeValidator.CheckColumnName(context,
                                                                       model.EntityId,
                                                                       model.Id,
                                                                       model.ColumnName);
         if (res.Length > 0)
             ModelState.AddModelError("TableName", res);
     }
     else if (model.TypeId == 1)
     {
         string res = MetadataEntityAttributeValidator.CheckColumnName(context,
                                                                       model.EntityId,
                                                                       model.Id,
                                                                       model.ColumnName);
         if (res.Length > 0)
             ModelState.AddModelError("TableName", res);
     }
 }
        public ActionResult EditAttribute(Guid? id, Guid? EntityId, MetadataEntityAttributeModel model, string button)
        {
            if (string.IsNullOrEmpty(button))
                return View(model);

            Validate(model);

            if (!ModelState.IsValid)
            {
                return View(model);
            }

            using (DBEntities context = Settings.CreateDataContext())
            {
                MetadataEntityAttribute target = null;
                if (model.Id != Guid.Empty)
                {
                    target = MetadataEntityHelper.GetAttribute(model.Id, context);
                    if (target == null)
                    {
                        ModelState.AddModelError("", Resources.Resource.RowNotFound);
                        return View(model);
                    }
                }
                else
                {
                    target = new MetadataEntityAttribute();
                    target.Id = model.Id = Guid.NewGuid();
                    context.AddToMetadataEntityAttribute(target);
                }

                MetadataEntityAttributeModel.CreateMap();
                target = Mapper.Map(model, target);
               // UpdateExtention(model, target, context);

                try
                {
                    context.SaveChanges();
                }
                catch (Exception ex)
                {
                    string errorMsg;
                    if (ex.InnerException != null)
                        errorMsg = string.Format("{0} {1}", ex.Message, ex.InnerException.Message);
                    else
                        errorMsg = ex.Message;

                    ModelState.AddModelError("", Resources.Resource.SaveError + ": " + errorMsg);
                    return View(model);
                }
            }

            if (button == "SaveAndExit")
                return RedirectToAction("Edit", new {id = model.EntityId});
            else
            {
                return RedirectToAction("EditAttribute", new {id = model.Id});
            }
        }