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));
这个解决方案的性能不是很好。。按函数查询的其他过滤方式有哪些?我有义务先使用代码,不能修改外部服务。这或这可能有帮助谢谢,我会看一看。这或这可能有帮助谢谢,我会看一看。