加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

entity-framework – 使用Entity框架核心生成和访问存储过程

发布时间:2020-12-16 04:22:06 所属栏目:asp.Net 来源:网络整理
导读:我正在使用Visual Studio 2017实现Asp.Net核心Web API,实体框架核心,数据库第一种方法.我已经设法基于现有数据库生成上下文和类文件.我需要使用我的上下文访问存储过程.在早期版本的实体框架中,通过在向导中选择存储过程对象并生成包含这些对象的edmx,可以很
我正在使用Visual Studio 2017实现Asp.Net核心Web API,实体框架核心,数据库第一种方法.我已经设法基于现有数据库生成上下文和类文件.我需要使用我的上下文访问存储过程.在早期版本的实体框架中,通过在向导中选择存储过程对象并生成包含这些对象的edmx,可以很简单.然后,我可以通过实体框架公开的复杂类型对象访问存储过程.我如何在实体框架核心中做类似的事情.一个例子会有帮助吗?

解决方法

数据库第一种方法在EF Core中没有edmx文件.相反,你必须使用Scaffold-DbContext

安装Nuget包Microsoft.EntityFrameworkCore.Tools和Microsoft.EntityFrameworkCore.SqlServer.Design

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

但这不会得到你的存储过程.它仍在开发中,跟踪问题#245

但是,要执行存储过程,请使用执行RAW SQL查询的FromSql方法

例如

var products= context.Products
    .FromSql("EXECUTE dbo.GetProducts")
    .ToList();

用于参数

var productCategory= "Electronics";

var product = context.Products
    .FromSql("EXECUTE dbo.GetProductByCategory {0}",productCategory)
    .ToList();

要么

var productCategory= new SqlParameter("productCategory","Electronics");

var product = context.Product
    .FromSql("EXECUTE dbo.GetProductByName  @productCategory",productCategory)
    .ToList();

执行RAW SQL查询或存储过程有一些限制.您不能将它用于INSERT / UPDATE / DELETE.如果要执行INSERT,UPDATE,DELETE查询,请使用ExecuteSqlCommand

var categoryName = "Electronics";
dataContext.Database
.ExecuteSqlCommand("dbo.InsertCategory @p0",categoryName);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读