Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在EF代码中首先调用数据库函数的可能方法_C#_Entity Framework_Ef Code First - Fatal编程技术网

C# 在EF代码中首先调用数据库函数的可能方法

C# 在EF代码中首先调用数据库函数的可能方法,c#,entity-framework,ef-code-first,C#,Entity Framework,Ef Code First,假设我的应用程序中有一些代码优先模型和一些代码片段: var myQueryable = (IQueryable<MyEntity>dbContext.MyEntitySet; var myFilteredQueryable = externalService.Filter(myQueryable); 我知道,不可能使用EdmFunciton创建自己的函数来像这样使用它: WHERE MyFunc(MyCol) = 1; myFilteredQueryable = myFilte

假设我的应用程序中有一些代码优先模型和一些代码片段:

var myQueryable = (IQueryable<MyEntity>dbContext.MyEntitySet;
var myFilteredQueryable = externalService.Filter(myQueryable);
我知道,不可能使用
EdmFunciton
创建自己的函数来像这样使用它:

WHERE MyFunc(MyCol) = 1;
myFilteredQueryable = myFilteredQueryable.Where(myEnt => MyFunctions.MyFunc(myEnty.MyCol);
它在数据库优先/模型优先中可用

我知道我可以直接运行它:

var selectedIds = myFilteredQueryable.Select(m => m.Id).ToArray();
var filteredIds = dbContext.Database.ExecuteSqlQuery<int>("SELECT Id FROM MyEntity WHERE MyFunc(MyCol) = 1 AND ID in (" + string.Join(selectedIds, ",") + ")").ToArray();

myFilteredQueryable = myFilteredQueryable.Where(myEnt => filteredIds.Contains(myEnt.Id));
var selectedIds=myFilteredQueryable.Select(m=>m.Id.ToArray();
var filteredIds=dbContext.Database.ExecuteSqlQuery(“从MyEntity中选择Id,其中MyFunc(mycl)=1,Id位于(“+string.Join(selectedds,”,“+”)))。ToArray();
myFilteredQueryable=myFilteredQueryable.Where(myEnt=>filteredIds.Contains(myEnt.Id));

这个解决方案的性能不是很好。。按函数查询的其他过滤方式有哪些?我有义务先使用代码,不能修改外部服务。

这或这可能有帮助谢谢,我会看一看。这或这可能有帮助谢谢,我会看一看。