gpt4 book ai didi

entity-framework - 使用Entity Framework Core生成和访问存储过程

转载 作者:行者123 更新时间:2023-12-03 23:13:35 24 4
gpt4 key购买 nike

我正在使用Visual Studio 2017实现Asp.Net核心Web API, Entity Framework 核心,数据库优先方法。我已经设法基于现有数据库生成上下文和类文件。我需要使用上下文访问存储过程。在早期版本的 Entity Framework 中,只需在向导中选择存储过程对象并生成一个包含这些对象的edmx,就很简单。然后,我可以通过 Entity Framework 公开的复杂类型对象访问存储过程。我如何在 Entity Framework 核心中做类似的事情。一个例子会有所帮助吗?

最佳答案

带有edmx文件的EF Core中没有数据库优先方法,而是必须使用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

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

例如
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);

关于entity-framework - 使用Entity Framework Core生成和访问存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44230580/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com