ورود

View Full Version : سوال: چگونه استفاده کنم از stored procedures with entity framework code first



mis.shima
دوشنبه 01 دی 1393, 10:15 صبح
سلام و روز بخیر
من یک پروژه نوشتم با mvc و برای ساخت مدل ها از EF Power Tools استفاده کردم حالا یکسری SP داخل Sql نوشتم چه جوری از این sp ها توی برنامه ام استفاده کنم و صداشون بزنم ؟؟؟
ممنون میشم راهنمایی کنید با تشکر

r4hgozar
دوشنبه 01 دی 1393, 12:17 عصر
سلام.
شما وقتی داری از code first استفاده می کنی دیگه نمی خوای اول مدلت داخل database ساخته بشه دیگه!! یعنی کلا دیتابیس نداری!!
خوب پروسیجر چرا؟؟
اصلا پروسیجر دیگه مفهومی نداره!!

mis.shima
دوشنبه 01 دی 1393, 12:23 عصر
والا نمیدونم مدیر فنی شرکتمون خواسته که از Sp استفاده کنم ؟حالا اگر بخوام از sp استفاده کنم باید چکار کنم ؟

r4hgozar
دوشنبه 01 دی 1393, 12:49 عصر
سلام.
تا اونجایی که من می دونم نمی شه.
باید از databse first استفاده کنین.

RIG000
دوشنبه 01 دی 1393, 20:39 عصر
http://stackoverflow.com/questions/4845246/does-entity-framework-code-first-support-stored-procedures
جز کسانی هستم که Codefirst رو نمی پرستم.

r4hgozar
سه شنبه 02 دی 1393, 11:38 صبح
http://stackoverflow.com/questions/4845246/does-entity-framework-code-first-support-stored-procedures
جز کسانی هستم که Codefirst رو نمی پرستم.

داداش حتما کد فرست پرستیدنیه که ملت می پرستن دیگه:لبخند:

ahad123
چهارشنبه 03 دی 1393, 08:06 صبح
اینجوری

var list = ContextName.Database.SqlQuery<ClassModel>("EXEC SP_Name").ToList();

IR-Developer
چهارشنبه 03 دی 1393, 08:25 صبح
http://stackoverflow.com/questions/4845246/does-entity-framework-code-first-support-stored-procedures
جز کسانی هستم که Codefirst رو نمی پرستم.


داداش حتما کد فرست پرستیدنیه که ملت می پرستن دیگه:لبخند:


به نظر من هر کدوم کاربرد خودوشون را دارن . اصلا نمیشه گفت CodeFirst خوبه SP بده یا بالعکس . توی پروژه هایی که با حجم اطلاعات بسیار بالایی سروکار داریم خیلی بهتره از SP استفاده کنیم و یک دیتاتیبل از اطلاعات را میتونیم یکباره Insert کنیم که توی سرعت خیلی تاثیر داره . در ضمن وابستگی به برنامه در SP کمتره و میشه بدون دستکاری در سورس به کوئری ها دسترسی داشت که خودش یک مزیت هست .

توی پروژه هایی که با حجم اطلاعات کمی سروکار داریم و در هر لحظه عملیات با حجم کم انجام میشه میتونیم از CodeFirst استفاده کنیم . توی شرکت خودمون وقتی پروژه های بزرگ کار میکنیم همیشه از SP استفاده میشه و سایتهای متوسط و کوچک که خیلی عملیات سنگین ندارن از CodeFirst استفاده میکنم .

RIG000
چهارشنبه 03 دی 1393, 09:25 صبح
CodeFirst خوبه SP بده یا بالعکس
این چی بود این وسط؟!!!!!
معمولا codefirsdt,dbfirst,Modelfirst رو با هم مقایسه میکنن. البته اگه dbfirst وجود نداشت من بین codefirst و model first حتما MOdelfirst رو انتخاب میکردم.

IR-Developer
چهارشنبه 03 دی 1393, 09:56 صبح
CodeFirst خوبه SP بده یا بالعکس
این چی بود این وسط؟!!!!!
معمولا codefirsdt,dbfirst,Modelfirst رو با هم مقایسه میکنن. البته اگه dbfirst وجود نداشت من بین codefirst و model first حتما MOdelfirst رو انتخاب میکردم.


منظور این بود که بیایم دیتابیس را از طریق db first طراحی کنیم و برای عملیات sp استفاده کنیم . و یا دیتابیس را با code fist طراحی کنیم و از linq برای عملیات استفاده بشه .
این بود این وسط :چشمک:

RIG000
چهارشنبه 03 دی 1393, 11:56 صبح
به هر حال راه هایی برای کار با sp وجود داره که باید ببینید که چقدر ارزش اینکار رو داره. و باید تو همون مسیی که خودمون میریم و از همون مسیری راه رو برای استفاده از sp هموار کنیم.
اگه codefirst و db first روش های خودشون رو دارند باید بگم موسی به دین خود عیسی به دین خود. هدف یکیه.

mis.shima
پنج شنبه 04 دی 1393, 08:48 صبح
خیلی ممنون از پاسخ ها اما من به جواب نرسیدم الان من از کد زیر برای call کردن sp استفاده کردم
public virtual ObjectResult<RoleByCondition_Result> RoleByCondition(Role role)
{
var roleIdParameter = role.Id != null ?
new ObjectParameter("RoleId", role.Id) :
new ObjectParameter("RoleId", typeof(int));

var nameParameter = role.Name != null ?
new ObjectParameter("Name", role.Name) :
new ObjectParameter("Name", typeof(string));


return ((IObjectContextAdapter)this).ObjectContext.Execut eFunction<RoleByCondition_Result>("GetRoleByCondition", roleIdParameter, nameParameter);
}

و در کنترلر هم به این روش فراخوانی کردم

public ActionResult Index()
{
portalzanisEntities db = new portalzanisEntities();
Role role = new Role();
role.Id = 1;
return View(db.RoleByCondition(role).ToList());
}
اما خطای زیر را صادر میکند :(
The model item passed into the dictionary is of type 'System.Collections.Generic.List`1[PortalZanisWeb.Models.RoleByCondition_Result]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable`1[PortalZanisWeb.Models.Role]'.
لطفا میشه راهنمایی کنید؟؟