#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 Как мне принять ответ и каковы правила?