帶有Entity Framwork Core 1.1.1.0的原始SQL查詢

entity-framework-core

只是想弄清楚如何使用EF Core 1.1.1.0執行原始SQL查詢

我曾經能夠創建一個連接和命令,如下所示:

var connection = _context.Database.GetDbConnection();
var command = connection.CreateCommand()
command.CommandText = "...";
// etc etc

但這似乎不再可用了。我在DbContext中找不到任何明顯的東西

一般承認的答案

看起來您可以執行以下操作:

var blogs = context.Blogs
    .FromSql("YOUR QUERY HERE")
    .ToList();

或者,如果您沒有想要使用的模型,您應該能夠:

context.Database.ExecuteSqlCommand("YOUR QUERY HERE");

來源: https//docs.microsoft.com/en-us/ef/core/querying/raw-sql https://msdn.microsoft.com/en-us/library/system.data.entity.database.executesqlcommand (v = vs.113)的.aspx


熱門答案

使用原始SQL查詢時需要注意幾個限制:

  • SQL查詢只能用於返回屬於模型的實體類型。我們的待辦事項上有一項增強功能,可以從原始SQL查詢中返回特殊類型。

  • SQL查詢必須返回實體類型的所有屬性的數據。

  • 結果集中的列名必須與屬性映射到的列名匹配。請注意,這與EF6.x不同,其中對於原始SQL查詢忽略屬性/列映射,並且結果集列名必須與屬性名稱匹配。

  • SQL查詢不能包含相關數據。但是,在許多情況下,您可以使用Include運算符在查詢之上進行組合以返回相關數據(請參閱包括相關數據)。

https://docs.microsoft.com/en-us/ef/core/querying/raw-sql

你可以使用Dapper liberary來複雜的原始sql。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow