Как мне спроектировать мою ViewModel и сохранить ее, используя AutoMapper и EF? - PullRequest
0 голосов
/ 01 августа 2011

Я не совсем уверен, как использовать ViewModels, поэтому мне нужна помощь по следующей проблеме:

Я создаю онлайн-опрос.Пользователь может создать вопрос с несколькими вариантами ответов.Объекты домена, которые я использую для этого, следующие:

[Question]
int category_id { get; set; } // The category the question belongs to
int type_code { get; set; } // The type of question (I.E Multiple Choice)
string question_wording { get; set; } // The question itself
bool visible { get; set; } // Visiblity
int question_number { get; set; } // The number of the question
string help_text { get; set; } // Help text if the user doesnt understand the question

[Multiple_Choice_Question]
int choice_number { get; set; } // The order in which the MCQ answer possibility is shown
int choice_wording { get; set; } // The MCQ answer possibility
string help_text { get; set; } // help_text if the user doesnt understand the answer possibility

// This is a cross-reference table in my database that maps questions with choice possibilities

[Ref_Multiple_ChoiceAnswer]
int question_id { get; set; }
int mcq_id { get; set; }

В моем представлении мне нужно иметь возможность создавать вопрос и возможности выбора (Multiple_Choice_Question) одновременно.Пользователь записывает варианты выбора в текстовом поле, каждое из которых разделено новой строкой.

подобно

Cat
Dog
Mouse

Теперь, когда я работаю с двумя сущностями, я должен просто поместить все необходимые свойства в свойViewModel?Каждая возможность ответа является новой строкой в ​​моей базе данных, и в представлении она отправляется обратно в виде строки (текст в текстовом поле) - как мне решить эту проблему?

Как использовать AutoMapper на [HttpPost], чтобы связать свойства из Вопроса с новым Объектом Вопроса и возможности ответа с Объектом Multiple_Choice_Question.Кроме того, каков наилучший способ отобразить эти два новых объекта в таблицу Ref_Multiple_ChoiceAnswer?

Заранее спасибо

1 Ответ

0 голосов
/ 01 августа 2011

Вы не должны связывать реквизит из модели представления.Это так по замыслу.

Это заставляет дизайн больше приближаться к уп.

Вы должны использовать:

class QuestionController{
 ActionResult Hide(int question){
   var q=find(question);
   q.Hide();
   return q.As<QuestionViewModel>();

 }
}
class Question{
  void Hide(){
    Visible=false;
  }
}

Вот почему "связующие свойства" не имеют смысла.

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