仅在EF Core中的Scaffold-DbContext存储过程

问题描述 投票:0回答:2

我一直将代码优先用于EF Core,现在我需要使用数据库优先。关于此,有很多问题,文档和教程,教您如何scaffold a database

Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o Models

但是,我唯一的要求在所有这些人中都缺失了。我只需要支持一些存储过程和视图,但是所有这些文件和问题都与如何包含表有关。

我本来打算搭建包括所有东西的支架,然后手动删除不需要的支架,但这似乎不是正确的选择。

c# sql-server entity-framework entity-framework-core ef-core-3.0
2个回答
0
投票

可以使用ExecuteSqlCommand调用原始SQL。因此,调用存储过程的代码将如下所示:

context.Database.ExecuteSqlCommand("YourStoredProcedure @p0, @p1", 
    parameters: new[] { "Joseph", "Gates" });

UPDATE:

[As msdn says关于如何从存储过程中获取行:

原始SQL查询可用于执行存储过程。

var user = "johndoe";

var blogs = context.Blogs
    .FromSqlRaw("EXECUTE dbo.GetMostPopularBlogsForUser {0}", user)
    .ToList();

以下示例使用原始SQL查询,该查询从表值函数(TVF),然后使用致电AsNoTracking:

var searchTerm = ".NET";

var blogs = context.Blogs
    .FromSqlInterpolated($"SELECT * FROM dbo.SearchBlogs({searchTerm})")
    .AsNoTracking()
    .ToList();

1
投票

使用EF Core Power Tools,它允许您选择要安装的支架并保存选择。

© www.soinside.com 2019 - 2024. All rights reserved.