- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
大家好,我有点不知所措。我已经使用 ASP.NET MVC 和 C# 在 visual studio 中创建了我的数据库、模型、 Controller 和 View ,但我不知道如何调用我也创建的存储过程。
我希望在我放置在 View 中的按钮上调用存储过程。单击按钮时,此存储过程应执行并显示结果。下面是我创建的存储过程、 View 、模型和 Controller 。
这是我的“员工”模型:
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Web;
namespace MVCSimpleApp.Models
{
[Table("Employees")]
public class Employee
{
[Display(Name ="Employee Id")]
public int EmployeeId { get; set; }
[Display(Name ="First Name")]
public string FirstName { get; set; }
[Display(Name ="Last Name")]
public string LastName { get; set; }
}
}
这是我的数据上下文:
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Web;
namespace MVCSimpleApp.Models
{
public class EmployeeContext : DbContext
{
public DbSet<Employee> Employee { get; set; }
}
}
这是我的员工 Controller :
using MVCSimpleApp.Models;
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.Mvc;
namespace MVCSimpleApp.Controllers
{
public class EmployeeController : Controller
{
private EmployeeContext db = new EmployeeContext();
// GET: Employee
public ActionResult Index()
{
var employees = from e in db.Employee select e;
return View(employees);
}
}
}
现在这是我的存储过程。内容不多,只是为了练习目的。
Create Proc DisplayStudents
AS
BEGIN
/*selecting all records from the table whose name is "Employee"*/
Select * From Employee
END
这是我的观点:
@model IEnumerable<MVCSimpleApp.Models.Employee>
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Student List</h2>
<p>
<a href="@Url.Action("Create")" title="Add new" class="btn btn-primary btn-lg">
<span class="glyphicon glyphicon-plus "></span>
Add Student
</a>
</p>
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.EmployeeId)
</th>
<th>
@Html.DisplayNameFor(model => model.FirstName)
</th>
<th>
@Html.DisplayNameFor(model => model.LastName)
</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(model => item.EmployeeId)
</td>
<td>
@Html.DisplayFor(modelItem => item.FirstName)
</td>
<td>
@Html.DisplayFor(modelItem => item.LastName)
</td>
<td>
<span>
<a href="@Url.Action("Edit", new { id = item.EmployeeId})" title="Edit Record">
<span class="glyphicon glyphicon-pencil"></span>
</a>
</span>
|
<span>
<a href="@Url.Action("Details", new { id = item.EmployeeId})" title="View Details">
<span class="glyphicon glyphicon-th-list"></span>
</a>
</span>
|
<span>
<a href="@Url.Action("Delete", new { id = item.EmployeeId})" title="Delete">
<span class="glyphicon glyphicon-trash"></span>
</a>
</span>
</td>
</tr>
}
/*this is the button I want the stored procedure to be called on when I click it*/
<button>Run</button>
</table>
伙计们,我需要你们对此事的意见和反馈。将接受将参数传递给存储过程的提示。如果我不在这里做事,请纠正我。感谢您的关心。
最佳答案
如果不需要使用 EF,您可以通过以下方式进行:
string cnnString = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionStringName"].ConnectionString;
SqlConnection cnn = new SqlConnection(cnnString);
SqlCommand cmd = new SqlCommand();
cmd.Connection = cnn;
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "ProcedureName";
//add any parameters the stored procedure might require
cnn.Open();
object o = cmd.ExecuteScalar();
cnn.Close();
如果您需要使用 Entity Framework ,请查看 this discussion .您还想使用用于插入、更新和删除的存储过程,请查看 this tutorial来自微软。
要通过单击按钮执行代码,您可以创建一个表单,在表单中放置一个按钮,如下所示:
@using(Html.BeginForm("TestAction", "TestController", FormMethod.Get))
{
<input type="submit" value="Submit" />
}
在你的 Controller 中你会有这样的 TestAction 方法
public ActionResult TestAction(){....}
如果您需要将任何参数传递给 TestAction,只需将它们指定为方法中的参数,然后使用接受 actionName、controllerName、routeValues 和 formMethod 作为参数的 BeginForm 的重载版本。
要将结果传递给 View ,您需要根据从存储过程中收到的值创建一个具有属性的 View 模型,然后从 TestAction 方法返回一个具有该 View 模型的 View 。
关于stored-procedures - ASP.Net MVC(C#)中如何调用和执行存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39587606/
我有 3 个表: 1. 学生:{id, name, roll} 2. 主题:{id, name} 3. 分数:{student_id, subject_id, marks} 我有一个返回所有学生及其分
我将制作一款完全由程序生成的空间/交易/战斗游戏。但是,我知道将整个星系的所有细节存储在内存中是不可行的。因此,我一直认为我可以使用种子来生成太阳系,并且从该太阳系,您可以使用跳跃门前往其他太阳系。问
我有一个关于 ADS 中存储过程的性能的问题。我创建了一个具有以下结构的简单数据库: CREATE TABLE MainTable ( Id INTEGER PRIMARY KEY,
我想将这个简单的东西加载到我的编辑器中: Write:-repeat,write("hi"),nl,fail. 所以它打印“嗨”。 我该怎么办? 我目前正在尝试做 File->New 并将名为 Wri
在从 c# 调用过程中显示以下错误 "Procedure or function 'CALL get_Users()'cannot be foundin database 'joomla'."` 代码
在网上找到了创建存储过程的教程,只是不明白到底什么时候需要执行创建存储过程。 是否应该在每次重新启动 MySQL 服务器时执行存储过程创建? 我是否需要在每次启动我的应用程序时都执行存储过程创建sql
我有一个包含所有例程的 MySQL 转储。当我恢复时,只有存储过程没有恢复。我从中提取 Dump 的 MySQL 版本是 5.0.77-log,我恢复到的版本是 5.6.12。 感谢任何帮助。 谢谢
我是一家大量使用存储过程(500+)的公司的新手。为了帮助学习系统,我希望有一种简单的方法来构建一个树型列表,显示系统中的所有存储过程以及它们自己调用哪些存储过程......从而创建可以执行的存储过程
我需要使用 mysqldump 和 replace 而不是 insert 并且在恢复时不删除数据库和表。但我需要删除并重新创建触发器和存储过程 为此,我将 mysqldump 与 --replace
在执行代码的过程中,我在不同的Scheme实现中遇到以下错误: Racket : application: not a procedure; expected a procedure that ca
我想将存储过程输出参数映射到一个实体。 例如, PROCEDURE ForExample @ID int, @LastUpdate datetime OUTPUT AS Update EntityTa
假设我有“myStoredProcedure”,它接受一个 Id 作为参数,并返回一个信息表。 是否可以编写类似于此的 SQL 语句? SELECT MyColumn FROM Tabl
我想将整个 sql 查询作为词法参数传递给存储过程,然后执行它。任何建议如何做到这一点? 最佳答案 你可以试试这个: create or replace procedure my_proc(pstri
考虑以下测试用例: { CompilerVersion = 21 } procedure Global(); procedure Local(); begin end; type TP
在 Azure Cosmos Db 中,是否可以从另一个存储过程调用一个存储过程?那么UDF呢?我可以从另一个 UDF、存储过程或触发器调用一个 UDF吗? 最佳答案 is there a way t
在 Azure Cosmos Db 中,是否可以从另一个存储过程调用一个存储过程?那么UDF呢?我可以从另一个 UDF、存储过程或触发器调用一个 UDF吗? 最佳答案 is there a way t
在 LINQ to Entities 中,我将存储过程的结果集映射到实体。 在存储过程中,我执行一些更新语句并通过运行 SELECT 查询并将结果集映射到实体来返回结果集。 数据库行得到正确更新,但返
创建存储过程时,BEGIN/END 块是否有用途? 例如, CREATE PROCEDURE SPNAME AS SELECT * FROM TABLE 对比 CREATE PROCEDURE S
正如您在下面看到的,我的过程有两个参数。我希望它们都是整数。但是,当我使用非整数测试该过程时,它仍然可以编译!为什么? create procedure int_arith( p_1 int, p_
我有一个 Client类(class)。在那个类里面有一个数组 losses .首先,我创建并使用客户端填充 clientsColl大批。然后对于该数组中的每个客户端,我填充其 losses大批。 然
我是一名优秀的程序员,十分优秀!