使用Entity Framework调用没有返回值的存储过程

25

我知道这是使用Entity Framework调用存储过程的方式。

context.Database.SqlQuery<myEntityType>(
    "mySpName @param1, @param2, @param3",
    new SqlParameter("param1", param1),
    new SqlParameter("param2", param2),
    new SqlParameter("param3", param3)
);

但是,如果我的存储过程只有几个更新语句并且没有返回值,那么我应该在myEntityType的位置放什么?


仅供参考,context.Database.ExecuteSqlCommand在Entity Framework Core 3.1中已经过时。 - Bhavesh Gohel
2个回答

60
你应该使用 context.Database.ExecuteSqlCommand 而不是 SqlQuery
context.Database.ExecuteSqlCommand(
    "mySpName @param1, @param2, @param3",
    new SqlParameter("param1", param1),
    new SqlParameter("param2", param2),
    new SqlParameter("param3", param3)
);

非常感谢你,Matt。你的回答为我节省了很多时间。 - Ashok kumar

-2
考虑以下存储过程,它将在 MS SQL 数据库的 Students 表中插入数据:
CREATE PROCEDURE CreateStudent
@FirstName Varchar(50),
@LastName Varchar(50)
AS
BEGIN
    SET NOCOUNT ON;
    Insert into Students(
           [FirstName]
           ,[LastName]
           )
 Values (@FirstName, @LastName)
END
GO

但是当您使用实体框架时,它将为您提供一种最佳功能,以最少的代码调用过程,请看下面的程序:

var context = new CtxEntity(); 

context.Database.ExecuteSqlCommand("CreateStudents @p0, @p1", parameters: new[] { "John", "Alex" });

仅仅发布代码是不够的,你应该提供一些解释。 - user1143634
感谢您的评论,最近我编辑了代码以提供更多的解释和说明。程序员请确保架构具有UnitOfWork和Repository模式,然后该代码才能正常工作。 - Khushbu kadia
请参考上面最近更新的代码,并给出您的反馈 @StaceyGirl - Khushbu kadia
您的帖子很久以前就已经被取消标记,因此不会被删除。但是,无法告诉那些给它打负分的人重新审查它。 - user1143634

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接