Извините, если на это уже был дан ответ, я не могу найти ответ в соответствии со своим сценарием.MVC - EF - Множественное сопоставление внешних ключей
У меня есть класс сущности и модель представления. Пример ниже:
Entity:
public class Data
{
[Key, Column(Order = 0)]
public int ID { get; set; }
[Column(Order = 1)]
public Q1Values Q1 { get; set; }
[Column(Order = 2)]
public Q1Values Q2 { get; set; }
}
ViewModel:
public class DataViewModel
{
[Key, Column(Order = 0)]
public int ID { get; set; }
[Column(Order = 1)]
public int Q1ID { get; set; }
[Column(Order = 2)]
public int Q2ID { get; set; }
public List<Q1Values> Q1ValuesList {get;set;}
}
Проблема у меня есть, что я буду иметь более 50 вопросов, все же, используя поиск по таблице 'Q1Values'. Проблема с вышеизложенным заключается в том, что перед вставкой мне придется вручную загрузить/сопоставить объекты FK из модели viewmodel в модель сущности.
Я попытался ниже с моделью зрения
public class DataViewModel
{
[Key, Column(Order = 0)]
public int ID { get; set; }
[Column(Order = 1)]
public Q1Values Q1ID { get; set; }
[Column(Order = 2)]
public Q1Values Q2ID { get; set; }
public List<Q1Values> Q1ValuesList {get;set;}
}
Я затем отображается в раскрывающемся меню, как показано ниже
@Html.DropDownListFor(m=>m.Q1.ID, new SelectList(model.Q1Values,"ID","Name"))
Но это еще требует от меня на карте, чтобы полностью загруженном объекта в контроллере поскольку он будет содержать только идентификатор.
Какова наилучшая практика для этого? Нужно ли мне отображать полный объект в контроллере для каждого вопроса? Похоже, что его многократно дублирует.
Я попытался определить внешний ключ вручную в классе сущности, но не могу заставить его работать для нескольких FK. Смотри ниже.
public class QOLData
{
[Key, Column(Order = 0)]
public int ID { get; set; }
[Column(Order = 1)]
public int Q1 { get; set; }
[Column(Order = 2)]
public int Q2 { get; set; }
[ForeignKey("Q1,Q2")]
public virtual Q1Values Q1Values { get; set; }
}