Отображение данных из нескольких таблиц в представлении как список - ASP.NET MVC

У меня есть следующие две таблицы (основная схема):

Tbl_CategoryType

Идентификатор описание LevelID

Идентификационное название Tbl_Levels

В основном я хочу представить всю информацию в таблице Tbl_CategoryType при ссылке на Tbl_Levels. Данные имени на основе Tbl_CategoryType. Номер LevelID.

Я попытался использовать соединение в своем репозитории как ниже;

public IQueryable GetAllTypesInCategory(int CatID)
{
     return (from x in DBEntities.LU_LST_CategoryTypeSet
             where x.CategoryID == CatID && x.Enabled == 1
             join y in DBEntities.LU_LST_LevelSet on x.LevelID equals y.ID
             select new {x, y});
}

Однако, когда я называю тот метод нет никакого типа, который я могу присвоить ему тому, поскольку он не вписывается в тип или Категории или Уровня.

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

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

5
задан Animesh 15 January 2012 в 08:12
поделиться

2 ответа

[

] Если между двумя сущностями существует ассоциация, то с ее помощью можно получить доступ ко второму типу. Единственное, что вам нужно сделать в этом случае, это использовать Include() метод загрузки данных ассоциации.[

] [
       public List<LU_LST_CategoryType> GetAllTypesInCategory(int CatID)  
         { 
             return (from x in DBEntities.LU_LST_CategoryTypeSet.Include("LU_LST_LevelSet") 
                     where x.CategoryID == CatID && x.Enabled == 1  
                     select x).ToList(); 
         }
] [

]Чем для каждой []LU_LST_CategoryTypeSet категории[] можно вызвать []category.LU_LST_Level[][

]
3
ответ дан 14 December 2019 в 08:52
поделиться
[

]Используя эту строку в операторе linq:[

] [
select new {x, y}
] [

]вы создаете новый []анонимный тип[], который отличается от ваших типов Entity (сущностей).[

] [

]Я предполагаю, что вы не используете EntityFramework или какой-нибудь другой тяжелый фреймворк, который будет автоматически разрешать внешние ключевые отношения для создания связанных сущностей. Если это так, то да, вам нужно будет создать ViewModel.[

] [

]Просто создайте простой оберточный класс, который содержит в качестве свойства одну из каждой сущности.[

] [
public class MyViewModel
{
    public MyViewModel(LU_LST_CategoryTypeSet x, LU_LST_LevelSet y)
    {
        Category = x;
        Level = y;
    }

    public LU_LST_CategoryTypeSet Category { get; set;}
    public LU_LST_LevelSet Level { get; set; }
}
] [

]Затем в операторе Linq, вместо создания анонимных типов, создайте MyViewModel типов:[

] [
public IQueryable GetAllTypesInCategory(int CatID)
{
     return (from x in DBEntities.LU_LST_CategoryTypeSet
             where x.CategoryID == CatID && x.Enabled == 1
             join y in DBEntities.LU_LST_LevelSet on x.LevelID equals y.ID
             select new {x, y});
}
] [

]Затем скопируйте результаты в свои классы модели:[

] [
   var listOfTypes = GetAllTypesInCategory(catID);
   foreach (var item in listOfTypes)
   {
      var model = new MyViewModel(item.x, item.y);

      //Do whatever with the model to get it to the view.
   }
] [

]Сделайте свой View наследуемым от MyViewModel.[

].
4
ответ дан 14 December 2019 в 08:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: