Является ли плохой практикой разрешать нулевые поля в таблице БД, чтобы упростить привязку модели к Ajax?
-
16-09-2019 - |
Вопрос
Пожалуйста, прочтите здесь и здесь чтобы получить краткий обзор моей проблемы и точно понять, что я имею в виду, когда говорю о привязке модели к 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, и было несколько раз, когда у меня возникал соблазн изменить базу данных ради модели, но это всегда возвращало меня в прошлое.