2009-07-15 3 views
2

Пожалуйста, ознакомьтесь с here и here, чтобы получить краткий обзор моей проблемы и посмотреть, что я имею в виду, когда говорю «Связывание модели с Ajax».Является ли это неправильной практикой, позволяющей пустым полям таблицы БД, чтобы упростить привязку модели от Ajax?

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

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

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

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

Так что я хочу знать ... для того, чтобы сделать привязку к модели, should/can N null поля db, которые я не могу передать из javascript? Или мне нужно сделать Custom Binder и привязать к «Flatter» версию объекта, чтобы следовать лучшим практикам? Пример пологой версии объекта:

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

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

+0

Только один ответ? У кого-нибудь еще есть мнение по этому поводу? – Matt

ответ

2

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

+0

Я согласен с тем, что база данных не кажется правильным решением, вот почему я спрашиваю. Разрешить вещи быть нулевыми, что не должно быть, просто спросить о проблемах, я хочу, чтобы их охватывали ... потому что, если бы я или кто-то еще должен работать против базы данных в будущем, они могут ошибаться, а БД В конечном итоге это предотвратит. С другой стороны, количество кода для покрытия всех классов кажется чрезвычайно обширным. Я надеялся, что, возможно, промежуточный или для кого-то, чтобы дать мне «ОК», чтобы обнулить эти переменные DB. – Matt