PDA

View Full Version : سوال: Entity Framework and stored procedures with OUTPUT parameters



freddy
چهارشنبه 25 اردیبهشت 1392, 18:21 عصر
برای دریافت پارامتر برگشتی که در sp تعریف شده

System.Data.Objects.ObjectParameter Param = new System.Data.Objects.ObjectParameter("Message", typeof(int));
تعریف می کنیم بعد در Context استفاده می کنید .
مشکل من اینه که وقتی این روش را استفاده می کنم ارور

cannot convert from system.data.object.Objectparameter to ref int?
کسی مشکل مشابه با ااین کار ندارد ؟


ctx = new TravelAgencyDataContext();
System.Data.Objects.ObjectParameter Param = new System.Data.Objects.ObjectParameter("Message", typeof(int));
ctx.sp_ViRequest_Ins_Client( UserId, Param);

freddy
چهارشنبه 25 اردیبهشت 1392, 23:24 عصر
کسی جوابی نداره؟

mo.esmp
پنج شنبه 26 اردیبهشت 1392, 01:34 صبح
System.Data.Objects.ObjectParameter Param = new System.Data.Objects.ObjectParameter("Message", typeof(int?));
ctx.sp_ViRequest_Ins_Client( UserId, Param).FirstOrDefault();

freddy
پنج شنبه 26 اردیبهشت 1392, 10:11 صبح
این چیزیکه شما می فرمایید امکان پذیر نیست .
بعد از استفاده از storedprocedure دیگه متدی نمایش داده نمیشه
یعنی کسی storedprocedure با مقدار خروجی استفاده نکرده.؟؟؟
با دیگر سوال رو مطرح میکنم
قصد دارم در entity متد(storedprocedure) را در صفحه استفاده کنم که این sp مقدار output دارد برای دریافت output
System.Data.Objects.ObjectParameter Message = new System.Data.Objects.ObjectParameter("Message", typeof(Int32));
تعریف کردم و حالا در Context صفحه sp را صدا میزنم
ctx.sp_ViRequest_Ins_Client(Name, Email, Phone, Mobile, Desc, UserId, VisaId, Message);
اما ارور زیر گرفته می شه
Argument 8: cannot convert from 'System.Data.Objects.ObjectParameter' to 'ref int?' J:\CurrentProjectViDetail.aspx.cs
در صورتی که کسی این مشکل را رفع کرده اطلاع دهد!!!

mo.esmp
پنج شنبه 26 اردیبهشت 1392, 12:54 عصر
اول نوع پارامتر رو Nullable تعریف کنید سپس امتحان کنید ببینید اجرا میشه یا نه؟
ObjectParameter("Message", typeof(int?))
اگه باز ختا داد ببینید این فرمایش قابل اجراست:

var qry = ctx.sp_ViRequest_Ins_Client( UserId, Param);
var userId = qry.FirstOrDefault().Id;

منزور از Id نام فیلدی که میخوای برگردونی و برای اتلاعات بیشتر این رو بخون
Executing a stored procedure with an output parameter using Entity Framework (http://www.timacheson.com/Blog/2009/jul/entity_framework_stored_procedure_with_output_para meter)

freddy
جمعه 27 اردیبهشت 1392, 19:44 عصر
متاسفانه نشد
System.Data.Objects.ObjectParameter Message = new System.Data.Objects.ObjectParameter("Message", typeof(int?));
var qry=ctx.sp_VisaRequest_Ins_Client( UserId, Message);
var param = qry.FirstOrDefault();
اصلا این متدها بایند نمیشوند ..
من که متاسفانه هنگ کردم اما به هر حال تشکر از جواب هاتون