[英]How do I make a raw sql query in EF Core 2.2?
我正在使用 dotnet core 2.x 應用程序。
我們有一堆“代碼優先”實體,以及 DBContext 中每個實體的 DBSet。
例子:
public class MyContext : DBContext
{
public MyContext(DBContextOptions<MyContext> options) : base (options) {}
public DbSet<Models.MyTable> MyTable { get; set; }
...
到現在為止還挺好。 現在我想做這個查詢:
SELECT DISTINCT MyColumn from dbo.MyTable
應該很容易吧? “經典 EF”有dbData.Database.SqlQuery<SomeModel>
,但在 EF Core 2.x 中我應該能夠做這樣的事情:
var myList = _context.MyTable.FromSql("SELECT DISTINCT MyColumn from dbo.MyTable").ToList();
這失敗了:
錯誤 CS1061:DbSet 不包含 FromSql 的定義...
我讀到可能我需要安裝一個額外的包,“Microsoft.EntityFrameworkCore.Relational”。 但是 NuGet > Browse 只向我展示了 v3.1(沒有 2.x 版本)......並且安裝這個包想要引入許多其他依賴項(!)
問題:
有什么方法可以使用 EF Core 2.x 進行簡單的 SQL 查詢...
......不需要“SELECT *”(引進整個表!),並且不需要下載和安裝一堆額外的NuGet依賴呢?
我認為你真正想要的是FromSqlRaw
https://docs.microsoft.com/en-us/ef/core/querying/raw-sql
在任何情況下,如果您在 EF 中,那么對於這樣一個簡單的查詢,您不需要這樣做。 EF select 不需要您從整個表模式中獲取數據。 您可以使用 .select 指定您想要的確切列。
有關更多信息,請參閱https://www.brentozar.com/archive/2016/09/select-specific-columns-entity-framework-query/ 。
謝謝你,伊萬·斯托耶夫。 解決方案是使用 LINQ“選擇”:
var myList = _context.MyTable.Select(e => e.MyColumn).Distinct().ToList();
這工作就像一個魅力...它不需要任何外部依賴。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.