Удаленная проверка в нескольких классах - PullRequest
0 голосов
/ 06 февраля 2019

Этот код используется для проверки уникального поля:

Модель:

public class SubCategory
    {
        [Key]
        public int ID { get; set; }

        [StringLength(450)]

        [Remote("IsProductNameExist", "Products", AdditionalFields = "ID",
                ErrorMessage = "Product name already exists")]
        public virtual string Name { get; set; }
        public virtual string ParentName { get; set; }
    }

Контроллер:

public JsonResult IsProductNameExist(string Name, int? ID)
    {
        var validateName = db.SubCategories.FirstOrDefault
                            (x => x.Name == Name && x.ID != ID);
        if (validateName != null)
        {
            return Json(false, JsonRequestBehavior.AllowGet);
        }
        else
        {
            return Json(true, JsonRequestBehavior.AllowGet);
        }
    }

Все это работает нормально.Проблема в том, что у меня есть несколько других классов (например, Category, ДалееCategories), где поля Name должны быть уникальными, и я так или иначе хочу повторно использовать этот код для всех этих полей.Я не могу понять, как я могу передать имя вызывающего класса методу IsProductNameExist, чтобы он знал, какую таблицу он должен проверять в базе данных на предмет вызывающего класса ... или есть ли другой способ, которым я могу достичь этого.

1 Ответ

0 голосов
/ 06 февраля 2019

Вы можете попробовать использовать, как показано ниже:

public JsonResult IsProductNameExist(DbSet<T> dbSet,string Name, int? ID) where T : class, new()
    {
        var validateName = dbSet.FirstOrDefault
                            (x => x.Name == Name && x.ID != ID);
        if (validateName != null)
        {
            return Json(false, JsonRequestBehavior.AllowGet);
        }
        else
        {
            return Json(true, JsonRequestBehavior.AllowGet);
        }
    }

Вы можете указанным выше способом, как

public void check(string Name, int? ID)
{
    var tableNameCheck1= IsProductNameExist(_dbContext.SubCategories, Name, ID);
    var tableNameCheck2= IsProductNameExist(_dbContext.Categories, Name, ID);       
}

Где dbSet ваш dbcontext.TableNameВы можете пройти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...