Stored Procedure توسط Entity Framework
پنجشنبه 4 تیر 1394Stored Procedure یا Sp یا به زبان فارسی " رویه های ذخیره شده " اشیایی اجرا پذیر در بانک اطلاعاتی SQL Server هستند که شامل یک یا چندین دستور SQL می شود ، این رویه ها میتوانند پارامتر های ورودی و خروجی داشته باشند. در این مقاله با نحوه کار با Stored Procedure ها توسط Entity Framework آشنا خواهیم شد.
ابتدا در sql server یک بانک اطلاعاتی با نام StudentStoredProcedureDB ساخته و مانند شکل زیر جدولی در آن با نام StudentStoredProcedure ایجاد نمایید.
از اسکریپت زیر برای ساخت جداول و Stored Procedure های آن استفاده نمایید.
Create procedure InsertStudentInfo @Name nvarchar(50), @Gender nvarchar(50), @Branch nvarchar(50) as Begin Insert into StudentStoredProcedure values (@Name, @Gender,@Branch) End Go Create procedure UpdateStudentInfo @ID int, @Name nvarchar(50), @Gender nvarchar(50), @Branch nvarchar(50) as Begin Update StudentStoredProcedure Set Name = @Name, Gender =@Gender, Branch = @Branch where ID = @ID End Go Create procedure DeleteStudentInfo @ID int as Begin Delete from StudentStoredProcedure where ID = @ID End Go
پس از اجرای کد زیر به Programmability رفته و طبق شکل می توانید Stored Procedure های ساخته شده با نام های “InsertStudentInfo”, “UpdateStudentInfo” and “DeleteStudentInfo” مشاهده نمایید.
حالا یک پروژه winform ساخته و با راست کلیک کردن روی نام پروژه add new item را زده و ADO.Net Entity Data Model را انتخاب نمایید. سپس EF Designer from database را انتخاب کنید.
connection و جدول را انتخاب کرده و app.config را “SP_EntityFramework” نامگذاری نمایید و روی Next کلیک نمایید.
طبق شکل زیر بانک اطلاعاتی و Stored Procedure ها را انتخاب نمایید و روی Finish کلیک کنید.
حال مدل Entity و Stored Procedure ساخته شده اما شما آنها را نخواهید دید. برای این که بتوانید آنها را ببینید کافی است طبق شکل در Entity Model Designer راست کلیک کرده و "Model Browser" را انتخاب نمایید.
حالا پوشه Stored Procedures را باز کرده و می توانید Stored Procedure ها را مشاهده نمایید.
حالا به Mapping Details رفته و می توانید <Select Insert Function> و <Select Update Function> و <Select Delete Function> را مشاهده نمایید و برای هر کدام یک Stored Procedure در نظر بگیرید.
حالا در این صفحه راست کلیک کرده و روی Validate کلیک نمایید.
یک فرم به صفحه اضافه کرده و یک DataGridView از جعبه ابزار به آن اضافه کنید.
همانند شکل روی تگ کوچک آن
کلیک کرده و روی “add column” کلیک نمایید.
پس از اضافه کردن ستون ها DataGridView شما مانند شکل می شود.
دوباره به تگ DataGridView رفته و گزینه DataSource آن را BindingdataSource1 نامگذاری نمایید.
روی Add project to Data Source کلیک کرده سپس Database و select Dataset را به ترتیب انتخاب نمایید. سپس رشته اتصال را مشخص نمایید. پس از کلیک روی Next جداول را مشاهده خواهید کرد. جداول و Stored Procedure ها را انتخاب کرده و روی OK کلیک نمایید.
زمانیکه از برنامه اجرا می گیرید داده ها را در DataGridView مشاهده خواهید کرد.
کدهای زیر به صورت خودکار ایجاد خواهند شد:
private void Form1_Load(object sender, EventArgs e) { // TODO: This line of code loads data into the 'for_entityDataSet.StudentStoredProcedure' table. You can use, or remove it, as needed. this.studentStoredProcedureTableAdapter.Fill(this.for_entityDataSet.StudentStoredProcedure); }
روی DataGridView دوبار کلیک کرده و کدهای مربوط به Delele و insert را بنویسید.
builder.DataSource = "MUNESH "; builder.InitialCatalog = "ForEntity"; builder.IntegratedSecurity = true;
private void Form1_Load(object sender, EventArgs e) { // TODO: This line of code loads data into the 'for_entityDataSet.StudentStoredProcedure' table. this.studentStoredProcedureTableAdapter.Fill(this.for_entityDataSet.StudentStoredProcedure); } private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) { //delete the row form database on gridview buttion click if (e.ColumnIndex == 1) { using(SqlConnection conn = new SqlConnection(builder.ToString())) { using(SqlCommand cmd = new SqlCommand("Ten Most Expensive Products", conn)) { try { conn.Open(); cmd.CommandType = CommandType.StoredProcedure; // _customQuery = new CustomQuery(); // SqlCommand sqlcmd= new SqlCommand(); SqlParameter parm = null; cmd.CommandText = "DeleteStudentInfo"; cmd.Parameters.AddWithValue("@ID", Convert.ToInt64(dataGridView1.Rows[e.RowIndex].Cells[2].Value)); cmd.ExecuteNonQuery(); conn.Close(); Form1_Load(sender, e); } catch {} } } } //INSERT into the row form database on gridview buttion click if (e.ColumnIndex == 0) { using(SqlConnection conn = new SqlConnection(builder.ToString())) { using(SqlCommand cmd = new SqlCommand("Ten Most Expensive Products", conn)) { try { conn.Open(); cmd.CommandType = CommandType.StoredProcedure; // _customQuery = new CustomQuery(); // SqlCommand sqlcmd= new SqlCommand(); SqlParameter parm = null; cmd.CommandText = "InsertStudentInfo"; cmd.Parameters.AddWithValue("@Name", "MUNESH"); cmd.Parameters.AddWithValue("@GENDER", "MALE"); cmd.Parameters.AddWithValue("@BRANCH", "IT") cmd.ExecuteNonQuery(); conn.Close(); Form1_Load(sender, e); } catch {} } } } }
- C#.net
- 2k بازدید
- 7 تشکر