私はMVC、Entityフレームワークアプリケーションに非常に慣れていて、まだ学んでいます。私は質問があります。 ストアドプロシージャでEntity FrameworkとMVCアプリケーションを使用してSQLサーバーデータベースに値を挿入します。私はDBの最初のアプローチを使用しています。なぜ私は値を挿入するための手続きを書いたとしても、select文を追加する必要があるのかと尋ねたい。 select文を書くのではなく、エラーをスローします。エンティティフレームワークMVCアプリケーションを使用してSQL Serverデータベースに値を挿入してもselect文を使用する理由
タイプ「System.Data.Entity.Core.EntityCommandExecutionException」の例外がEntityFramework.SqlServer.dllで発生したが、ユーザーコード 追加情報で処理されなかった。データリーダは、指定された「EmployeeDBModelと互換性がありません。従業員'。タイプ 'Id'のメンバーには、同じ名前のデータリーダーに対応する列がありません。
ALTER PROCEDURE [dbo].[sp_InsertEmployees]
-- Add the parameters for the stored procedure here
@FirstName varchar(50),
@LastName varchar(50),
@Address varchar(50),
@Salary int
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
Insert into Employee values(@FirstName,@LastName,@Address,@Salary)
--select scope_identity() as Id,Firstname,LastName,Address,Salary from Employee
END
私はそれだけで仕事select
コマンドのコメントを解除した場合。
注: - Id
ID列とオートシードが真
モデルです: -
public partial class Employee
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Address { get; set; }
public Nullable<int> Salary { get; set; }
}
コントローラー:
[HttpPost]
public ActionResult Create(Employee emp)
{
using (EmployeeDBEntities db = new EmployeeDBEntities())
{
if (ModelState.IsValid)
{
db.InsertEmpDetail(emp.FirstName, emp.LastName, emp.Address, emp.Salary);
db.SaveChanges();
ViewBag.Message = "New Employee Created Successfully!!";
}
}
return View(emp);
}
私は機能InsertEmpDetail
を作成し、正しくマップしました。