[技术]-没有 ORM 的架构

14次阅读

共计 652 个字符,预计需要花费 2 分钟才能阅读完成。

USE [lysk2]
GO
    /****** Object:  StoredProcedure [dbo].[P_EvacuateNodes]    Script Date: 2023/11/30 8:25:41 ******/
SET
    ANSI_NULLS ON
GO
SET
    QUOTED_IDENTIFIER ON
GO
    ALTER proc [dbo].[P_EvacuateNodes] @node int = 999 as begin truncate table CalStartTab;

EXEC P_CalculateStartProc @node;

truncate table CalEndTab;

EXEC P_CalculateEndProc @node;

truncate table EvacEvenNodesTab;

insert into
    EvacEvenNodesTab
SELECT
    tp.*
FROM
    (
        SELECT
            TOP 100 PERCENT ROW_NUMBER() OVER (
                partition BY ddid
                ORDER BY
                    wtime
            ) AS rowNum,
            sid,
            tid,
            ygid,
            wtime,
            ddid
        FROM
            WFRecord
        WHERE
            id IN (
                SELECT
                    id
                FROM
                    WFRecord wf
                    INNER JOIN CalStartTab s ON wf.ddid = s.ddid
                    INNER JOIN CalEndTab e ON wf.ddid = e.ddid
                WHERE
                    (
                        sid = @node
                        OR tid = @node
                    )
                    AND wtime >= s.minTime
                    AND wtime <= e.maxTime
                GROUP BY
                    wf.ddid,
                    wf.id
            )
        ORDER BY
            wtime
    ) tp
WHERE
    tp.rowNum % 2 = 0 truncate table EvacOddNodesTab;

insert into
    EvacOddNodesTab
SELECT
    tp.*
FROM
    (
        SELECT
            TOP 100 PERCENT ROW_NUMBER() OVER (
                partition BY ddid
                ORDER BY
                    wtime
            ) AS rowNum,
            sid,
            tid,
            ygid,
            wtime,
            ddid
        FROM
            WFRecord
        WHERE
            id IN (
                SELECT
                    id
                FROM
                    WFRecord wf
                    INNER JOIN CalStartTab s ON wf.ddid = s.ddid
                    INNER JOIN CalEndTab e ON wf.ddid = e.ddid
                WHERE
                    (
                        sid = @node
                        OR tid = @node
                    )
                    AND wtime >= s.minTime
                    AND wtime <= e.maxTime
                GROUP BY
                    wf.ddid,
                    wf.id
            )
        ORDER BY
            wtime
    ) tp
WHERE
    tp.rowNum % 2 = 1
end

突然翻到之前自己写的存储过程 现在看看都是头皮发麻 公司框架用的还是 .Net Framework 4.5

直接用 CYQ.Data 和数据库交互 sql 中 order by 还失效 必须先查询加载到内存后再排序

之前一直用的是 EF 或者 EF Core 也用过 SqlSugar 这样的第三方框架

[技术]- 没有 ORM 的架构

正文完
 0