我一直将代码优先用于EF Core,现在我需要使用数据库优先。关于此,有很多问题,文档和教程,教您如何scaffold a database,
Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o Models
但是,我唯一的要求在所有这些人中都缺失了。我只需要支持一些存储过程和视图,但是所有这些文件和问题都与如何包含表有关。
我本来打算搭建包括所有东西的支架,然后手动删除不需要的支架,但这似乎不是正确的选择。
可以使用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();
使用EF Core Power Tools,它允许您选择要安装的支架并保存选择。