C# Npgsql+;EF不';不要接近读者

C# Npgsql+;EF不';不要接近读者,c#,postgresql,entity-framework-core,C#,Postgresql,Entity Framework Core,我尝试使用Npgsql将ASP.NETMVC5项目移植到PostgreSQL。但在这段代码中有一个错误: public ActionResult Index() { var roles = Roles.GetAll(); foreach (var role in roles) { if (!RoleManager.RoleExists(role)) { var identityRole = new Identity

我尝试使用
Npgsql
将ASP.NETMVC5项目移植到PostgreSQL。但在这段代码中有一个错误:

public ActionResult Index()
{
    var roles = Roles.GetAll();

    foreach (var role in roles)
    {
        if (!RoleManager.RoleExists(role))
        {
            var identityRole = new IdentityRole() { Name = role };
            var result = RoleManager.Create(identityRole);
            // Check a creation result
            if (!result.Succeeded)
            {
                Logger.Error(string.Format("Role '{0}' can't be created.", role));
            }
        }
    }
    //Detect root administrators count
    var rootRole = RoleManager.FindByName(Roles.Root);
    ViewData["userCount"] = rootRole.Users.Count;
    List<KpiViewModel> kpies;
    //Build KPIs
    using (var db = new DatabaseContext())
    {
        var staffs = db.Staff.Where(s => s.TasksStaff.Count > 0);
        kpies = new List<KpiViewModel>(staffs.Count());

        foreach (var s in staffs)
        {
            var item = new KpiViewModel();
            item.Id = s.Id;
            item.Name = string.Format("{0} {1} {2}", s.LastName, s.FirstName, s.Patronymic);
            var tasks = s.TasksStaff.Select(ts => ts.Task).Where(t => t.ClosedOn.HasValue);

            float percent = 0f;
            int total = tasks.Count();

            if (total > 0)
            {
                var closed = (float)tasks.Where(t => t.EndDate.Date.CompareTo(t.ClosedOn.Value.Date) >= 0).Count();
                percent = closed / total * 100;
                item.Percent = percent;
            }

            var ks = db.Kpi.Where(k => k.Percent <= percent).OrderByDescending(k => k.Percent);
            var kpi = ks.FirstOrDefault();
            var tint = 0xEEEEEE; //Default color RGB 238, 238, 238

            if (kpi != null)
            {
                tint = kpi.Tint;
            }

            item.Tint = '#' + tint.ToString("X6");
            kpies.Add(item);
        }
    }

    return View(kpies);
}
public ActionResult Index()
{
var roles=roles.GetAll();
foreach(角色中的var角色)
{
如果(!RoleManager.RoleExists(角色))
{
var identityRole=new identityRole(){Name=role};
var result=rolemager.Create(identityRole);
//检查创建结果
如果(!result.successed)
{
Logger.Error(string.Format(“无法创建角色“{0}”,角色));
}
}
}
//检测根管理员计数
var rootRole=rolemager.FindByName(Roles.Root);
ViewData[“userCount”]=rootRole.Users.Count;
列出关键绩效指标;
//建立KPI
使用(var db=new DatabaseContext())
{
var Staff=db.Staff.Where(s=>s.taskstaff.Count>0);
kpies=新列表(staff.Count());
foreach(员工中的var s)
{
var item=new KpiViewModel();
项目Id=项目Id;
item.Name=string.Format(“{0}{1}{2}”、s.LastName、s.FirstName、s.Patronymic);
var tasks=s.taskstaff.Select(ts=>ts.Task)。其中(t=>t.ClosedOn.HasValue);
浮动百分比=0f;
int total=tasks.Count();
如果(总数>0)
{
var closed=(float)tasks.Where(t=>t.EndDate.Date.CompareTo(t.ClosedOn.Value.Date)>=0.Count();
百分比=关闭/总计*100;
项目百分比=百分比;
}
var ks=db.Kpi.Where(k=>k.百分比k.百分比);
var kpi=ks.FirstOrDefault();
var tint=0xEEEEEE;//默认颜色RGB 238、238、238
如果(kpi!=null)
{
tint=kpi.tint;
}
item.Tint='#'+Tint.ToString(“X6”);
增加(项目);
}
}
返回视图(KPI);
}
错误:
操作已在进行。
位于
var kpi=ks.FirstOrDefault()代码字符串。
如何修复它?

您的线路

var staffs = db.Staff.Where(s => s.TasksStaff.Count > 0);
正在运行。您可以添加一个
ToList()
,使其回调数据,即

var staffs = db.Staff.Where(s => s.TasksStaff.Count > 0).ToList();
你的线路

var staffs = db.Staff.Where(s => s.TasksStaff.Count > 0);
正在运行。您可以添加一个
ToList()
,使其回调数据,即

var staffs = db.Staff.Where(s => s.TasksStaff.Count > 0).ToList();

非常感谢。它帮助了我,谢谢你!它帮助了我。