小编Doğ*_*unç的帖子

如何选择要在EF中更新的特定字段

我想从@where获取数据库中的所有记录,然后更新它们.为此,我创建了一个这样的查询:

public async Task MarkAllAsActive()
{
    var currentUserId = _userManager.GetCurrentUserId();
    await _workOrders.Where(row => row.Status == WorkOrderStatus.Draft).ForEachAsync(row =>
    {
        row.Status = WorkOrderStatus.Active;
        _uow.MarkAsChanged(row, currentUserId);
    });
}
Run Code Online (Sandbox Code Playgroud)

但是此查询选择数据库中的所有字段并不好.为了解决这个问题我尽量选择像刚才特定字段ID,Status:

public async Task MarkAllAsActive()
{
    var currentUserId = _userManager.GetCurrentUserId();
    await _workOrders.Select(row=>new WorkOrder { Id=row.Id,Status=row.Status}).Where(row => row.Status == WorkOrderStatus.Draft).ForEachAsync(row =>
    {
        row.Status = WorkOrderStatus.Active;
        _uow.MarkAsChanged(row, currentUserId);
    });

}
Run Code Online (Sandbox Code Playgroud)

但它返回此错误:

无法在LINQ to Entities查询中构造实体或复杂类型"DataLayer.Context.WorkOrder".

我看过类似的帖子和同样的错误,但我的问题不同,因为我想更新.

我怎样才能做到这一点?

c# linq entity-framework

6
推荐指数
1
解决办法
575
查看次数

QWidget不显示QLabel

我有一个QWidget,我想在另一个QWidget上使用Dialog.

我想要做的是一个简单的"请等待yadda yadda ......"对话框,没有按钮.

代码部分如下:

void NewWindow::on_combobox_New_currentIndexChanged(int index) //slot function
{
    QWidget* box = new QWidget();
    box->setWindowModality(Qt::ApplicationModal);
    box->setWindowTitle("Wait...");

    QHBoxLayout* layout = new QHBoxLayout();
    box->setLayout(layout);
    QLabel* lbl = new QLabel();
    lbl->setText("Loading...");
    layout->addWidget(lbl);

    box->show();


    for (int var = 0; var < st.size(); ++var)
    {
        //Some heavy lifting here
    }

    box->close();
}
Run Code Online (Sandbox Code Playgroud)

通常情况下,我希望这个对话框显示正确的文本,并在循环结束后消失.实际上它也是这样,但有一点不同:标签不显示.小部件看起来是空的.然后消失.

QWidget标签不显示

如果我将代码复制到另一个区域(例如,复制到MainWindow构造函数),它将正确显示其中的消息.

QWidget标签显示正常

我感觉循环阻止了绘制操作,但是小部件本身也应该丢失.为什么只有标签才能让我望而却步.

感谢您的任何见解.

c++ qt

2
推荐指数
1
解决办法
416
查看次数

标签 统计

c# ×1

c++ ×1

entity-framework ×1

linq ×1

qt ×1