gpt4 book ai didi

ormlite-servicestack - 我可以在 ServiceStack 上使用 OrmLite 对 JOIN 查询进行更新吗?

转载 作者:行者123 更新时间:2023-12-02 03:05:10 25 4
gpt4 key购买 nike

我想根据包含连接的查询的结果对表中的特定字段进行更新。将 OrmLite 与 ServiceStack 结合使用。

我的类(class)如下:

public class Document
{
public int Id { get; set; }
public string BCL_Code { get; set; }
public bool IsActive { get; set; }
public int DocumentTypeId { get; set; }
}

public class DocumentType
{
public int Id { get; set; }
public string TypeName { get; set; }
}

尝试使用以下代码对连接进行更新:

var q = db.From<Document>()
.Join<Document, DocumentType>(
(doc, type) => doc.DocumentTypeId == type.Id)
.Where(d => d.BCL_Code == "FR49")
.And<DocumentType>(t => t.TypeName == "Enrollment Process");

db.UpdateOnly(new Document { IsActive = false }, onlyFields: q);

我知道我可以更新特定字段,我知道如何进行联接,但是当我尝试在查询中包含一个联接,然后执行 UpdateOnly 时,我在 db.UpdateOnly 行上收到一条错误消息:

The multi-part identifier "DocumentType.TypeName" could not be bound.

是否可以对连接查询进行更新?如果可以,正确的做法是什么?

最佳答案

OrmLite 中还没有用于从表更新的类型化 API,您可以 add a feature request为了它。

在此期间,您可以使用自定义 SQL,例如:

db.ExecuteSql(@"UPDATE Document SET IsActive = @isActive
FROM Document d
INNER JOIN DocumentType t ON (d.DocumentTypeId = t.Id)
WHERE d.BCL_Code = 'FR49'
AND t.TypeName = 'Enrollment Process'",
new { isActive = false });

关于ormlite-servicestack - 我可以在 ServiceStack 上使用 OrmLite 对 JOIN 查询进行更新吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43260944/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com