Не удается извлечь строки таблицы из ASP.Net страница core razor

#c# #asp.net-core #razor-pa&es

#c# #asp.net-core #страницы razor

Вопрос:

Я новичок в C # и ASP.Net страницы core razor. Я думаю, что это простой вопрос, но по прошествии многих часов я все еще не смог его решить.

Я (в настоящее время) помещаю свою бизнес-логику (например, логику обслуживания) в root / BLL/MaintenanceBLL/Maintenance.cs

При попытке прочитать записи в таблице обслуживания из Maintenance.cs. Я получаю сообщение об ошибке

CS0030 не удается преобразовать тип ‘Club.Модели.Обслуживание’ в ‘Club.BLL.maintenancebl.Maintenance’

Термин ForEach изменен в коде VS2019. Я не могу устранить эту ошибку. Буду признателен за любую помощь.

Мой код:

 Namespace Club.BLL.MaintenanceBLL
{
    public class Maintenance
    {
        private readonly Club.Data.ApplicationDbContext _context;

        public Maintenance(Club.Data.ApplicationDbContext context)
        {
            _context = context;
        }
        public Maintenance()
        {
        }
      
        public void DoMaintenance()
        {
            //Parse Maintenance table and action those items
            //where Active=True and ActionDate has passed
           
            var maintenances = _context.Maintenance;
            foreach (Maintenance m in maintenances)
            {
                //do somethin&
            }
        }
    }
}
  

Комментарии:

1. Проблема в том, что у вас есть два разных класса, каждый из которых назван одинаково: Maintenance . Одним из решений является уточнение имени, например foreach (Club.Models.Maintenance m in maintenances) {} . Лучшим решением было бы присвоить каждому отдельному классу его собственное имя, например переименовать ваш пример class MaintenanceBLL .

Ответ №1:

Используйте var для автоматического определения типа, подобного

 foreach (var m in maintenances)
  

или

 foreach (Club.Models.Maintenance m in maintenances)
  

Причина в том, что у вас должно быть два Maintenance класса, один из которых будет находиться под namespace Club.Models , а другой под namespace Club.BLL.MaintenanceBLL .

Поскольку ваш текущий код находится под, Namespace Club.BLL.MaintenanceBLL; когда вы пишете Maintenance , он попытается найти Maintenance m in maintenances класс под текущим namespace или всеми namespace , которые вы упомянули usin& ... .

Вы не добавили, usin& Club.Models; поэтому он не найдет, Club.Models.Maintenance и ваш foreach (Maintenance m in maintenances) будет рассматриваться как Club.BLL.MaintenanceBLL.Maintenance .

Но у вас _context.Maintenance было бы DbSet<Club.Models.Maintenance&&t; так, что при записи foreach (var m in maintenances) ожидается цикл с Club.Models.Maintenance объектом. И вы упомянули, Maintenance что будет рассматриваться как Club.BLL.MaintenanceBLL.Maintenance поэтому ваш компилятор показывает red line ошибку with.

Комментарии:

1. Спасибо за это Карану и paulsm4 . Высоко ценится. Я обработаю ваши комментарии и дам вам знать, что произойдет. Спасибо за ваш отзыв.

2. Да, теперь я понимаю, так что могу продолжить свой путь. Спасибо за ваши быстрые ответы. Приветствия … и будьте в безопасности

3. @Alan Laird Как мне принять ответ и каковы правила?