首页 > 解决方案 > 无法从 ASP.Net 核心剃须刀页面检索表行

问题描述

我是 C# 和 ASP.Net 核心剃须刀页面的新手。我认为这是一个简单的问题,但经过几个小时我仍然无法解决它。

我(目前)将我的业务逻辑(例如维护逻辑)放在 root/BLL/MaintenanceBLL/Maintenance.cs

尝试从 Maintenance.cs 读取维护表中的记录。我得到错误

CS0030 无法将类型“Club.Models.Maintenance”转换为“Club.BLL.MaintenanceBLL.Maintenance”

VS2019 在代码中对 ForEach 一词进行了红线标记。我无法解决此错误。任何援助将不胜感激。

我的代码是:

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 something
            }
        }
    }
}

标签: c#asp.net-corerazor-pages

解决方案


用于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在 currentnamespace或 all下找到namespace您提到的类using ...

您尚未添加using Club.Models;,因此它不会找到Club.Models.Maintenance,您的foreach (Maintenance m in maintenances)遗嘱将被视为Club.BLL.MaintenanceBLL.Maintenance.

但是当你写它时你_context.Maintenance会这样,它会期望与对象循环。你提到了这会被认为是你的编译器显示错误。DbSet<Club.Models.Maintenance>foreach (var m in maintenances)Club.Models.MaintenanceMaintenanceClub.BLL.MaintenanceBLL.Maintenancered line


推荐阅读