在EF Core里面如何使用以前EntityFramework的DbContext.Database.SqlQuery<SomeModel>自定义查询
问:
With Entity Framework Core removing dbData.Database.SqlQuery<SomeModel> I can't find a solution to build a raw SQL Query for my full-text search query that will return the tables data and also the rank.
The only method I've seen to build a raw SQL query in Entity Framework Core is via DbContext.Product.FromSql("SQL SCRIPT"); which isn't useful as I have no DbSet that will map the rank I return in the query.
答:
In EF Core you no longer can execute "free" raw sql. You are required to define a POCO class and a DbSet for that class. In your case you will need to define Rank:
var ranks = DbContext.Ranks .FromSql("SQL_SCRIPT OR STORED_PROCEDURE @p0,@p1,...etc", parameters) .AsNoTracking().ToList();
As it will be surely readonly it will be useful to include the .AsNoTracking() call.
意思就是EF Core不支持DbContext.Database.SqlQuery<SomeModel>这种自定义查询了,请老老实实映射你的视图或存储过程查询结果到一个EF Core的Entity上,然后使用DbSet的FromSql方法实现查询结果的反序列化。。。