问题描述
我是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
}
}
}
}
解决方法
使用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
类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.Maintenance
对象一起循环。并且您提到Maintenance
,它会被视为Club.BLL.MaintenanceBLL.Maintenance
,因此您的编译器将显示错误的red line
。