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

时间:2019-12-14 20:14:47

标签: c# sql-server entity-framework entity-framework-core ef-core-3.0

我一直将代码优先与EF Core结合使用,现在我需要使用数据库优先。关于此的问题,文档和教程很多,其中包括如何scaffold a database


import cv2
import numpy as np 
from pynput.mouse import Button, Controller
import argparse
from constants import *
from utils import *




if __name__ == '__main__':


    mouse_loc_old = np.array([0, 0])
    mouse_loc     = np.array([0, 0])
    pinch         = False


    parser = argparse.ArgumentParser()
    parser.add_argument('-a', '--all', help='show all steps', action="store_true")
    parser.add_argument('-c', '--contours', help='draw contours', action="store_true")
    args   = parser.parse_args()

    # creating the mouse object
    mouse = Controller()

    # video capture settings
    cap   = cv2.VideoCapture(0)
    cap.set(3, CAPTURE_WIDTH)
    cap.set(4, CAPTURE_HEIGHT)
    .......

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

我本来打算脚手架,包括所有内容,然后手动删除不需要的内容,但这似乎不是正确的选择。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

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

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

更新:

here关于如何从存储过程中获取行:

  

原始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();