Ash*_*ani 7 c# sql-server entity-framework entity-framework-core ef-core-3.0
我一直在 EF Core 中使用代码优先,现在我需要使用数据库优先。有很多关于此的问题、文档和教程,教授如何构建数据库,
Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o Models
Run Code Online (Sandbox Code Playgroud)
然而,我在这里唯一的要求在所有这些中都缺失了。我只需要构建一些存储过程和视图,但所有这些文档和问题都涉及如何包含表。
我打算搭建包括所有内容的脚手架,然后手动删除不需要的内容,但这似乎不是正确的选择。
可以使用 调用原始 SQL ExecuteSqlCommand。因此调用存储过程的代码将如下所示:
context.Database.ExecuteSqlCommand("YourStoredProcedure @p0, @p1",
parameters: new[] { "Joseph", "Gates" });
Run Code Online (Sandbox Code Playgroud)
更新:
正如 msdn 所说的如何从存储过程中获取行:
原始 SQL 查询可用于执行存储过程。
var user = "johndoe";
var blogs = context.Blogs
.FromSqlRaw("EXECUTE dbo.GetMostPopularBlogsForUser {0}", user)
.ToList();
Run Code Online (Sandbox Code Playgroud)
以下示例使用从表值函数 (TVF) 中进行选择的原始 SQL 查询,然后通过调用 AsNoTracking 禁用更改跟踪:
var searchTerm = ".NET";
var blogs = context.Blogs
.FromSqlInterpolated($"SELECT * FROM dbo.SearchBlogs({searchTerm})")
.AsNoTracking()
.ToList();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11390 次 |
| 最近记录: |