получить одну строку из таблицы с объединением на второй таблице и показать ее в подробном представлении - PullRequest
0 голосов
/ 19 октября 2018

У меня есть aTable, где одним компонентом является carID, а в bTable есть carNames.Теперь у меня есть идентификатор таблицы.в контроллере по умолчанию мы делаем это

 public ActionResult Details(int? id)
{
var aObject= db.aTable.Find(id);
return View(aObject);

и генерируем представление «детали», используя класс модели aTable.

, но в этом случае у меня будет представление, в котором я буду показывать только идентификатормашины не зовут.И я хочу присоединиться к bTable во время запросов к aTable, и в связи с этим я хочу показать текст названия машины.

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

    a table is 
   int aID
   string aName
   int carID

    b talbe is
   int bID
   string bcarName


 public class ModifiedaTableModel
{
        [Key]
        [Required(ErrorMessage = "aIDis required.")]
        public int aID{ get; set; }
        [Required(ErrorMessage = "aName required.")]
        public string aName{ get; set; }
        [Required(ErrorMessage = "carName required.")]
        public string carName{ get; set; }
}

Ответы [ 3 ]

0 голосов
/ 19 октября 2018

проверить эту статью linq101Samples

Опция 1

 var query = db.aTable
               .Join(db.bTable, r => r.aID, 
                                p => p.bID, 
             (r,p) => new ModifiedaTableModel 
                      {
                         aID = r.aID,
                         aName = r.aName,
                         carName = p.carName
                      }).SingleOrDefault();
0 голосов
/ 19 октября 2018

Здесь я рассмотрел ваше успешно выполненное отношение между aTable и bTable и спроецировал ваш результат запроса на ModifiedaTableModel, объединив обе таблицы.

public ActionResult Details(int? id)
{
    ModifiedaTableModel model = new ModifiedaTableModel();
    if (id != null)
    {
        model = (from a in db.aTable
                 join b in db.bTable on a.carID equals b.bID
                 where a.aID == id.Value
                 select new ModifiedaTableModel
                 {
                     aID = a.aID,
                     aName = a.aName,
                     carName = b.bcarName
                 }).SingleOrDefault();

        return View(model);
    }
    return View(model);
}
0 голосов
/ 19 октября 2018

Если ваш CarID равен bID, выполните:

var modifiedATableModel = (from a in aTable
                          join b in bTable
                          on a.carID equals b.bID
                          select new ModifiedaTableModel
                          {
                              aID = a.aID,
                              aName = a.aName,
                              carName = b.bcarName
                          }).FirstOrDefault();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...