小编raj*_*cle的帖子

将谓词作为参数传递给Where子句时,EF SQL发生了变化

EF为下面列出的两个类似语句生成不同的SQL

var test = dbcontext.Persons.GetAll()
                            .Where(c => c.PersonID == 2)
                            .Select(c => c.PersonName)
                            .FirstOrDefault();`
Run Code Online (Sandbox Code Playgroud)

生成的SQL:

SELECT 
    [Limit1].[PersonName ] AS [PersonName ]
FROM 
    (SELECT TOP (1)
         [Extent1].[PersonName ] AS [PersonName ]
     FROM 
         [dbo].[ApplicationRequest] AS [Extent1]
     WHERE 
         [Extent1].[PersonID ] = @p__linq__0) AS [Limit1]',N'@p__linq__0 uniqueidentifier',@p__linq__0= "2"
Run Code Online (Sandbox Code Playgroud)

我在不同Where条件的多个地方使用上述陈述; 在一个地方合并逻辑我将条件作为参数传递

Public Void PassPredicate(Func<ApplicationRequest, bool> ReqFunc)
{
    var test = dbcontext.Persons.GetAll()
                                .Where(ReqFunc)
                                .Select(c => c.PersonName)
                                .FirstOrDefault();
}
Run Code Online (Sandbox Code Playgroud)

我把这个函数称为

PassPredicate(c => c.PersonID == 2);
Run Code Online (Sandbox Code Playgroud)

生成的SQL:

SELECT 
    [Extent1].[PersonID] AS [PersonID], 
    [Extent1].[PersonName ] AS [PersonName ], 
    [Extent1].[DOB] …
Run Code Online (Sandbox Code Playgroud)

.net c# linq entity-framework

7
推荐指数
1
解决办法
829
查看次数

主控和分支显示相同的更改

我还在学习Git的过程中,当我觉得我已经掌握了它的时候......我遇到了一个问题,让我再次感觉自己是一个新手......

我有一个主控和一个分支。由于某些“只有上帝知道”的原因,当我在两个分支上执行“Git status”时,它们显示相同的更改。

当我将这些更改提交给其中一个时......我在另一个中看不到它们......

Master*: Git status
On branch Master
Changes not staged for commit:
      modified:   Config/A.txt 
Untracked files:
       logs/B.txt


**Branch-1*: Git status**
On branch Branch-1
Changes not staged for commit:
      modified:   Config/A.txt 
Untracked files:
       logs/B.txt   
Run Code Online (Sandbox Code Playgroud)

你暂时是上帝,:)

git

7
推荐指数
2
解决办法
4052
查看次数

标签 统计

.net ×1

c# ×1

entity-framework ×1

git ×1

linq ×1