如何用EF和LINQ替换ado.net和SQL

时间:2015-05-19 16:40:17

标签: c# linq entity-framework ado.net

我在ado.net中用sql编写了一个旧代码,我想用EF和linq进行更改,这里我使用的表是GP_REGION,我想完成行var test = db3.GP_REGION.Where(aa=>aa.??????????);可以任何人都会替换旧的ado.net代码

这是完整的代码

    GPentities db1 = new GPentities();

    var test = db3.GP_REGION.Where(aa=>aa.??????????);

 //this is the line which i want to complete

以下是现有的SQL代码

SELECT distinct GP_REGION.REGION_MAIN Region_Code,
            R1.REGION_NAME FROM GP_REGION INNER JOIN GP_REGION R1 
            ON GP_REGION.REGION_MAIN = R1.REGION_CODE WHERE GP_REGION.REGION_HAS_DATA='Y'
            AND GP_REGION.REGION_MAIN IN (SELECT DISTINCT AR.BRANCH_CODE FROM PORTAL.UA_APPLN_ROLE AR 
            INNER JOIN PORTAL.UA_GROUP G ON AR.GROUP_CODE = G.GROUP_CODE
            WHERE G.USER_ID = '" + Global.UserId() + "' AND AR.APPLICATION_ID = '" + ApplicationId + "') ORDER BY GP_REGION.REGION_MAIN",
                                             "REGION_NAME", "Region_Code", ref ErrorMessage, true);

以下是表结构

"REGION_CODE" VARCHAR2(3 BYTE) NOT NULL ENABLE, 
    "REGION_NAME" VARCHAR2(40 BYTE) NOT NULL ENABLE, 
    "REGION_MAIN" VARCHAR2(3 BYTE), 
    "REGION_SHORT" VARCHAR2(1 BYTE) NOT NULL ENABLE, 
    "REGION_HAS_DATA" VARCHAR2(1 BYTE), 
    "REGION_CRM_CODE" VARCHAR2(3 BYTE), 
    "REGION_CRM_ID" NUMBER(2,0), 
    "REGION_IS_SUB" VARCHAR2(1 BYTE), 
     CONSTRAINT "PK_GP_REGION" PRIMARY KEY ("REGION_CODE")

1 个答案:

答案 0 :(得分:0)

这是返工。如果要将ADO.NET更改为EF。更好的选择是将数据集或datareader更改为IEnumerable,然后您可以应用Linq.Put围绕ADO.Net为LINQ提供包装。

如果您有SQL查询并希望转换为等效的LINQ查询。 Doc是一个SQL到LINQ转换器工具。它可以帮助您学习LINQ并转换现有的SQL语句。