C# 如何在实体框架中将查询脚本用作IQueryable或DBSet
我首先使用实体框架代码查询数据库, 问题是我不允许在数据库中创建视图, 所以我应该在代码中使用查询脚本。我希望这个查询脚本被视为与DBSet或IQueryable by entity framework相同,以便可以对其应用linq查询。 我不希望它是IEnumerable,所以“Database.SqlQuery”对我不起作用 例如: 数据库中有一个产品表,它包含{Id,Name,CategoryId} db中有一个Category表,它包含{Id,Name} 我的查询脚本如下所示:C# 如何在实体框架中将查询脚本用作IQueryable或DBSet,c#,entity-framework,iqueryable,sql-scripts,C#,Entity Framework,Iqueryable,Sql Scripts,我首先使用实体框架代码查询数据库, 问题是我不允许在数据库中创建视图, 所以我应该在代码中使用查询脚本。我希望这个查询脚本被视为与DBSet或IQueryable by entity framework相同,以便可以对其应用linq查询。 我不希望它是IEnumerable,所以“Database.SqlQuery”对我不起作用 例如: 数据库中有一个产品表,它包含{Id,Name,CategoryId} db中有一个Category表,它包含{Id,Name} 我的查询脚本如下所示: sele
select Id,Name,CategoryId,CategoryName
from Product p
join Category c on p.CategoryId=c.Id
我想在代码中使用这个查询,就像它是一个视图一样
有什么想法吗
ps:查询脚本太复杂了,我无法用Linq构建它
我用拦截器解决了这个问题,
以下是解决方案:
public DbSet MyViews{get;set;}
public void reader执行(DbCommand命令,DbCommandInterceptionContext interceptionContext)
,并修改命令文本,如下所示:
command.CommandText=command.CommandText.Replace(“[dbo].[MyViews]”,“(“+MyViewScript+”)”)代码>
您可以使用EF执行原始SQL查询:
您可以使用EF执行原始SQL查询: