با سلام.
در entity framework چگونه از store procedure استفاده می کنیم؟
با تشکر
می خای چی کار کنی .منظورم اینه پروسیجر ت چیکار می کنه.
insert,delete,update
برای حذف از کد زیر استفاده می کنم :
sql:
ALTER PROCEDURE [dbo].[SP_ChartsInsert] -- Add the parameters for the stored procedure here @Name nvarchar(50), @state bit, @val int output AS BEGIN TRY -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- Insert statements for procedure here if(exists(select ID from Cahrts where Name=@Name)) begin set @val=-1 end else begin insert into Cahrts (Name,[State])values(@Name,@state) set @val=1 end END TRY BEGIN CATCH set @val=0 END CATCH
کد سی شارپ:
ObjectParameter obj = new ObjectParameter("val", typeof(int)); db = new MrchCmsDB(); db.SP_ChartsState(id, obj); int result = int.Parse(obj.Value.ToString()); db.Dispose(); if (result == 1) { litalert.Text = Alert(new string[] { "success", "موفق", "عملیات ویرایش با موفقیت انجام شد" }); LoadData(); } else { litalert.Text = Alert(new string[] { "danger", "ناموفق", "عملیات ویرایش با موفقیت انجام نشد" }); return; }
در پرسیجر دو مقدار مشاهده می کنید که یکش ورودی و دیگری خروجی هست
ورودی @ID
خروجی @val
اگر عملیات با موفقیت انجام شد مقادار @val برابر با 1 قرار می دهم اگر نشد برابر 0 یا -1 که مقدار -1 یعنی اینکه رکوورد برای حذف وجود ندارد
و در کد C#:
ObjectParameter obj = new ObjectParameter("val", typeof(int));
این یک پارمتر که همان @val از نوع عدد هست که در پروسیجر موجود بود
MrchCmsDB نام مدل من هست
و حال
ا db.SP_ChartsState(id, obj
);
که همان پروسیجر من هستش نوشتم دو تا مقدار
دارد که اولی Id یا سطر مورد نظرم و مقدار دوم
پارمتری که تعریف کردم
ObjectParameter obj = new ObjectParameter("val", typeof(int));
حالا مقدار obj رو بدست میارم و مثلا اگر برابر 1 بود یعنی موفق آمیز
بود در غیر این صورت نا موفق بوده
حالا برای اینکه اطلاعات نمایش بدی یا بهتر بگم رکوردهاتو بدست بیاری:
var lst =db.SP_YourProsForSelect().Tolist()
حالا می تونی این لیست و بهاهاش کار کنی :مثلا ارتباط با gridview
gr
db = new MrchCmsDB(); var lst = db.SP_ChartsSelectAdmin().ToList(); db.Dispose(); grcahrts.DataSource = lst; grcahrts.DataBind();
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)