【发布时间】:2021-09-27 07:09:34
【问题描述】:
我正在使用实体框架开发一个 ASP .NET WEB API。我有一个必须在 LINQ 中重写的 SQL 代码,我尝试了不同的方法,但都没有奏效。代码如下:
SELECT
Debit, Credit,
(SELECT SUM(q.debit - q.Credit)
FROM Qry013 q
WHERE q.AccountGuide = 'D23265D8-E39A-4AF0-B652-0608FA61A866'
AND q.EntryNumber <= qry013.EntryNumber
AND q.ID <= qry013.ID) AS balance,
ISNULL(Entryname, InvoiceName) AS source,
ISNULL(EntryNumber, BillNumber) ASTransactionNumber,
TBL001.CurrencyShortcut AS CurrencyName,
Qry013.Rate, CostCenterName, BranchName,
EntryNote
FROM
Qry013
INNER JOIN
TBL001 ON TBL001.CardGuide = Qry013.CurrencyGuide
WHERE
AccountGuide = 'D23265D8-E39A-4AF0-B652-0608FA61A866'
AND Posted = 1
一切似乎都很简单,但有一个带有 SUM 操作的嵌套 SELECT 的那部分。非常感谢您的帮助
【问题讨论】:
-
谢谢@mark_s,我还是stackoverflow的新手
-
您不需要将所有内容都转换为 Linq。在 EF 中,您还可以在实体和数据库级别执行原始 sql 选择。检查docs.microsoft.com/en-us/ef/core/querying/raw-sql
-
@CetinBasoz 我尝试了类似的方法,但出现以下错误('数据读取器与指定的'XtrDBModel.Qry013'不兼容。类型的成员'ID'没有数据读取器中具有相同名称的相应列。')
-
@CetinBasoz 这是我尝试过的代码:(var result = DBContext.Qry013.SqlQuery(@"my query went here").ToList();)
-
尝试创建一个 DTO 实体类并将查询输出映射到该实体类。例如:
(var result = DBContext.Qry013.SqlQuery<TEntityDTO>(@"my query went here").ToList();)
标签: sql asp.net api entity-framework linq