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

前端之家收集整理的这篇文章主要介绍了entity-framework – 使用Entity框架核心生成和访问存储过程前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用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);

猜你在找的asp.Net相关文章