Serveral модели в одном виде ASP. net ядро ​​с EF ядром - PullRequest
0 голосов
/ 04 мая 2020

Я хочу создать информационную панель из двух таблиц и диаграммы данных в базе данных, используя ASP. net Core 3.1 и EF Core 3.

Это класс модели учителя:

public class Teacher
{
    [Key]
    public Int64 ID { get; set; }

    public Sring Name { get; set; }

    public  int Age { get; set; }

    }

это класс модели курса:

 public class Course
{
    [Key]
    public Int64 ID { get; set; }

    public Sring Name { get; set; }

    public Sring TargetClass { get; set; }
    }

Класс ViewModel выглядит следующим образом:

public class DashboardViewModel
{

    public List<Course> Course { get; set; }
    public List<Teacher> Teacher { get; set; }
}

страница указателя:

    <h2> Table of Teacher</h2>
<table>
    <thead>
        <tr>
            <th> ID</th>
            <th> Name</th>
            <th> Age</th>
        </tr>
    </thead>
    <tbody>
        @foreach (Teacher item in Model.Teacher)
        {
            <tr>
                <td>
                    @item.ID
                </td>
                <td>
                    @item.Name
                </td>
                <td>
                    @item.Age
                </td>
            </tr>
        }
    </tbody>

</table>

<h2> Table of Courses</h2>
<table>
    <thead>
        <tr>
            <th> ID</th>
            <th> Name</th>
            <th> TargetClass</th>
        </tr>
    </thead>
    <tbody>
        @foreach (Teacher item in Model.Course)
        {
            <tr>
                <td>
                    @item.ID
                </td>
                <td>
                    @item.Name
                </td>
                <td>
                    @item.TargetClass
                </td>
            </tr>
        }
    </tbody>

</table>

Домашний контроллер:

    public class HomeController : Controller
{

    private readonly ApplicationDbContext _context;

    public HomeController(ApplicationDbContext context)
    {
        _context = context;
    }

   public  async Task<IActionResult> Index() 
    {
        var qry =  await _context.Teacher.ToListAsync();

        var Teachers = new List<Teacher>(){};

        var Courses = new List<Courses>() { };

        var Dash = new DashboardViewModel {

        Course = Courses,
        Teacher = Teachers
        };

        return View(Dash);
    }

Проблема появляется при попытке передать данные из переменной qry в список. Вопрос: Как я могу передать данные из EF в Список учителей в качестве примера?

        var qry =  _context.Teacher.ToListAsync();

        var Teachers = new List<Teacher>(){qry};

Без ошибки преобразования: невозможно преобразовать из 'System.Threading.Tasks.Task<System.Collections.Generic.List<School.Models.Teacher>>' to 'School.Models.Teacher'

1 Ответ

2 голосов
/ 05 мая 2020

Я не могу сделать это в комментариях, поэтому я опубликую это здесь, а затем я могу изменить ответ, если он не совсем правильный. Вам не нужно заранее создавать пустые списки, просто создайте ViewModel все в одном кадре. Как я думаю, что jegtugado пытался предложить, код Index () должен выглядеть примерно так:

   public  async Task<IActionResult> Index() 
    {
        var Dash = new DashboardViewModel {
            Course = await _context.Course.ToListAsync(),
            Teacher = await _context.Teacher.ToListAsync()
        };

        return View(Dash);
    }

Это предполагает, что ваши DbSets называются Teacher и Course (но это часто множественное число, поэтому дважды проверьте это) .

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