Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 将存储过程映射到除CRUD之外的enity框架_Entity Framework_Stored Procedures - Fatal编程技术网

Entity framework 将存储过程映射到除CRUD之外的enity框架

Entity framework 将存储过程映射到除CRUD之外的enity框架,entity-framework,stored-procedures,Entity Framework,Stored Procedures,我已经理解了下面的代码 protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity<Student>() .MapToStoredProcedures(p => p.Insert(sp => sp.HasName("sp_InsertStudent").Parameter(pm => pm.StudentName, "na

我已经理解了下面的代码

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<Student>()
        .MapToStoredProcedures(p => p.Insert(sp => sp.HasName("sp_InsertStudent").Parameter(pm => pm.StudentName, "name").Result(rs => rs.Student_ID, "Student_ID"))
        .Update(sp => sp.HasName("sp_UpdateStudent").Parameter(pm => pm.StudentName, "name"))
        .Delete(sp => sp.HasName("sp_DeleteStudent").Parameter(pm => pm.Student_ID, "Id"))
        );
}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Entity()
.MapToStoredProcedures(p=>p.Insert(sp=>sp.HasName(“sp\u InsertStudent”)。参数(pm=>pm.StudentName,“name”)。结果(rs=>rs.Student\u ID,“Student\u ID”))
.Update(sp=>sp.HasName(“sp_UpdateStudent”).Parameter(pm=>pm.StudentName,“name”))
.Delete(sp=>sp.HasName(“sp_DeleteStudent”)。参数(pm=>pm.Student_ID,“ID”))
);
}
但我仍然有几个问题 1.如果我有一个名为calculate的按钮,并且想调用CRUD之外的其他程序。我怎么称呼那个SP?
2.如何将模型/实体(集合)列表作为参数传递给过程?或任何其他解决方案。

如果您可以访问要调用存储过程的
DbContext
类,只需执行以下操作:

var studentStuff = dbContext.Database.SqlQuery<Student>
("dbo.DoSomethingWithStudent @studentID", 
new SqlParameter("@studentID", studentID));

如果您有权访问要在其中调用存储过程的
DbContext
类,只需执行以下操作:

var studentStuff = dbContext.Database.SqlQuery<Student>
("dbo.DoSomethingWithStudent @studentID", 
new SqlParameter("@studentID", studentID));

谢谢你,帕特里克。这意味着我们不能从EF向SP发送复杂类型。我必须转到ado.net并将datatable作为TVP传递给SP.@user961372不,这仍然是实体框架。DbContext类是EF的一部分(它位于System.Data.Entity命名空间中)。这不是原始的ADO.Net。如果你觉得我的答案有用,请接受。谢谢帕特里克。这意味着我们不能从EF向SP发送复杂类型。我必须转到ado.net并将datatable作为TVP传递给SP.@user961372不,这仍然是实体框架。DbContext类是EF的一部分(它位于System.Data.Entity命名空间中)。这不是原始的ADO.Net。如果你觉得我的回答有用,请接受。