C# 如何将谓词表达式转换为SQLWHERE子句
我在应用程序中使用EF Core。但是,我在应用程序中有一部分非常需要使用SQLC# 如何将谓词表达式转换为SQLWHERE子句,c#,upsert,ef-core-2.1,C#,Upsert,Ef Core 2.1,我在应用程序中使用EF Core。但是,我在应用程序中有一部分非常需要使用SQLMERGE语句,关于一个名为FlexLabs.Upsert的项目,我想创建某种Upsert扩展,它将生成一个MERGE语句 但是,与FlexLabs.Upsert项目不同,FlexLabs.Upsert项目中的ON子句只是作为属性等式列表创建的,我需要能够传入一个更复杂的谓词,如下所示: DbContext.Upsert(个人) .On((原始,比较)=>{ 返回(original.AgencyId==compare
MERGE
语句,关于一个名为FlexLabs.Upsert的项目,我想创建某种Upsert
扩展,它将生成一个MERGE
语句
但是,与FlexLabs.Upsert项目不同,FlexLabs.Upsert项目中的ON
子句只是作为属性等式列表创建的,我需要能够传入一个更复杂的谓词,如下所示:
DbContext.Upsert(个人)
.On((原始,比较)=>{
返回(original.AgencyId==compare.AgencyId
&&original.AgencyReferenceId==compare.AgencyReferenceId)
||
(original.SSN==compare.SSN)
||
(original.Firstname==compare.Firstname
&&原始.Lastname==比较.Lastname
&&原始.Birthdate==比较.Birthdate)
})
.UpdateColumns(…)
.RunAsync();
如果没有更好的选项,我知道EntityFramework中的某些东西能够接受谓词并创建SQLWHERE
子句。有没有办法将WHERE
子句生成一个字符串,然后用上的替换WHERE
有人能帮我弄清楚如何生成该子句,或者告诉我EF团队实际生成where
子句的代码吗?你能不能让你的方法签名接受Func
?方法上的签名是什么?您能不能让您的方法签名接受Func
?
方法上的签名是什么?