Это плохая практика, чтобы разрешить пустые поля в таблицу БД, чтобы упростить привязку модели из Ajax? - PullRequest
2 голосов
/ 15 июля 2009

Пожалуйста, прочитайте здесь и здесь , чтобы получить краткий обзор моей проблемы и точно понять, что я имею в виду, когда говорю «Привязка модели» из Ajax.

Было бы плохой идеей сделать поля внешних ключей обнуляемыми, чтобы разрешить привязку модели из javascript?

Например, мы хотим привязать объект Person во время вызова ajax к ... (класс Person создается из Entity Framework)

public ActionResult Create(Person personToCreate)
{
    //Create person here
}

Если у Person был объект Pet, который был внешним ключом в БД, вы не можете передать объект Pet вместе с другими данными из вызова ajax. Таким образом, если Pet не обнуляется в БД, привязка к Person не будет работать.

Итак, я хочу знать, что ... для привязки модели должен / может ли я обнулить поля db, которые я не могу передать из javascript? Или мне нужно сделать Custom Смоделируйте связывание и привязку к «более плоской» версии объекта, чтобы следовать рекомендациям? пример более плоской версии объекта:

public class SimplePerson() {
   private string firstName;
   private string lastName;
   private string petName;
}

Причина, по которой я спрашиваю об этом, состоит в том, что многие классы, созданные в Entity Framework, содержат внешние ключи, что означает, что мне нужно будет создать плоский дубликат почти всех этих классов, и это, кажется, идет вразрез с DRY основной.

1 Ответ

2 голосов
/ 16 июля 2009

Я перечитал то, что вы связали и опубликовали, я действительно не могу придумать хорошее решение изо всех сил, но сама концепция изменения вашей основной базы данных ради AJAX делает меня некомфортным. Я знаю, что это не очень хороший ответ, я сам сейчас борюсь с несколькими проблемами проектирования EF, и было несколько раз, когда у меня возникало желание изменить базу данных ради модели, но это всегда приходило назад, чтобы укусить меня в прошлом.

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