Если вы хотите сделать это, используя EF Core вместо ADO. NET или Dapper, вы можете использовать необработанные Sql Запросы, как показано ниже:
Пример EF Core 2.1:
var blogs = context.Blogs
.FromSql("SELECT * FROM dbo.Blogs")
.ToList();
В EF Core 3.1 FromSql
устарел, поэтому используйте FromSqlRaw
var blogs = context.Blogs
.FromSqlRaw("SELECT * FROM dbo.Blogs")
.ToList();
Аналогично, ваш запрос может быть выполнен как
var results = context.ProductCategories.FromSqlRaw(Select P.Name as ProductName, C.Name as CategoryName from tblCategory C JOIN tblProduct P ON C.Id = P.CategoryId)
Примечание: Кроме того, вы необходимо определить ProductCategories в классе контекста.
public DbQuery<ProductCategory> ProductCategories { get; set; }
ProductCategory.cs
public class ProductCategory
{
public string ProductName { get; set; }
public string CategoryName { get; set; }
}
Здесь, ProductCategory называется EF Core 2.1 как тип запроса. В EF Core 3.0 концепция была переименована в типы ключей без ключей. Он служит типом возврата для необработанных Sql запросов.
. Для получения более подробной информации см. docs.microsoft.com