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

StackOverflow https://stackoverflow.com/questions/1133556

Вопрос

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

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

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

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

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

Итак, что я хочу знать, так это...для того, чтобы выполнить привязку модели, должен / могу ли я обнулить поля базы данных, которые я не могу передать из javascript? Или я должен создать пользовательскую модель Binder и привязать к "более плоской" версии объекта, чтобы следовать лучшим практикам?пример более плоской версии объекта:

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

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

Это было полезно?

Решение

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top