# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > Silverlight > سوال: استفاده از stored procedure

## alikaed

با سلام
من توی پروژم از EF استفاده کردم حال می خواستم بدونم که چطور می تونم دیتا گریدم رو با Sp پر کنم (domain service)

----------


## alikaed

کسی بلد نیست؟

پس یه راهی برای اجرای کوئری های بزرگ بدون sp بدید!!!!!!!!!!!

----------


## torisoft

> کسی بلد نیست؟
> 
> پس یه راهی برای اجرای کوئری های بزرگ بدون sp بدید!!!!!!!!!!!


دوست عزیز اول اینکه کار با sp تو سیلور یکم مشکل و پیچیده ی پیشنهاد می کنم استفاده نکنید مخصوصا موقعی که از domain service استفاده می کنید. راه حل جایگزین LINQ

اما جهت آگاهی خیلی خلاصه روند کاریش رو میگم
در فایل EDMX وارد قسمت Model browser میشید. سپس از قسمت EntityContainer بروی Function Imports کلیک کنید در صفحه ی پیش رو sp خود را انتخاب و یک اسم برای اون جهت ارجاع انتخاب کنید(ترجیحا همون نام SP)
در قسمت Entites همان صفحه table یا view مربوط به همان sp را انتخاب کنید و OK
پروژه را یک بار build کنید
در قسمت domain service خودتون همانند table یا view که در ابتدا تشکیل شده به sp مورد نظر ارجاع بدید(باید خودتون درست کنید)

موفق باشید

----------


## alikaed

این راه رو قبلا تست کردم همان طور که گفتید هم پیچیده و هم وقت گیره .

به هر صورت این هم یک ضعفه سیلورلایته

----------


## d_derakhshani

با استفاده از function import به هيچ وجه نميشه گفت كه كار پيچيده است، مگه وقتي خودتون دستي يا با استفاده از ديتاست ويزارد اين كار مي كنيد كار خيلي راحت تري انجام ميديد؟صرفا چون به روش هاي سنتي عادت داريد براتون شايد ساده بياد. دوم اينكه استفاده از function import از طريق designer روش خيلي مطمئني نيست چون ممكنه به هر دليل اون رو پاك يا حذف كنيد. در كل فايل ها edmx خيلي روشون نبايد حساب كرد(البته منظور هميشه نيست) روش اصولي تر ايجاد موارد لازم از طريق كد با استفاده از partial هست،اين روش ميشه گفت پيچيده است.
روش بعدي اينه كه با روش سنتي(Connection، Command و ...) sp‌رو اجرا كنيد، بعد ديتا به دست اومده رو تو يك ليستي از يك كلاس معادل بريزيد و از طريق متد هاي Invoke در DomainService ديتا رو برگشت بديد. براي تبديل ديتا از sp به هر كلاس معادلي مي تونيد با استفاده از Reflection يك متد عمومي ايجاد كنيد كه بتونه براتون هر نوع خروجي sp رو به كلاس معادل تبديل كنه.
اما در نهايت بايد گفت كه روش هاي كه در سيلورلايت استفاده ميشه روش ها مدرن هست و به همين دليل روش هاي سنتي در اون كمي با زحمت ترن. اما اين اصلا ضعف محسوب نميشه. اين مثل اين ميمونه كه بگيد چون گوشي هاي جديد مادون قرمز ندارن پس داراي ضعف هستند. 
ماكروسافت براي تكنولوژي هاي مختلفش انقدر tools و generator هاي ساده گذاشته كه وقتي شما به جايي ميرسيد كه tools ش كمتره فكر مي كنيد اين ضعفه.

----------


## alikaed

ای کاش با یه مثال ساده نحوه فراخوانی متد فراخوانی sp و پر کردن دیتاگرید(سمت کلاینت) با این متد رو توضیح می دادید.

----------


## behroozshz

> با استفاده از function import به هيچ وجه نميشه گفت كه كار پيچيده است، مگه وقتي خودتون دستي يا با استفاده از ديتاست ويزارد اين كار مي كنيد كار خيلي راحت تري انجام ميديد؟صرفا چون به روش هاي سنتي عادت داريد براتون شايد ساده بياد. دوم اينكه استفاده از function import از طريق designer روش خيلي مطمئني نيست چون ممكنه به هر دليل اون رو پاك يا حذف كنيد. در كل فايل ها edmx خيلي روشون نبايد حساب كرد(البته منظور هميشه نيست) روش اصولي تر ايجاد موارد لازم از طريق كد با استفاده از partial هست،اين روش ميشه گفت پيچيده است.
> روش بعدي اينه كه با روش سنتي(Connection، Command و ...) sp‌رو اجرا كنيد، بعد ديتا به دست اومده رو تو يك ليستي از يك كلاس معادل بريزيد و از طريق متد هاي Invoke در DomainService ديتا رو برگشت بديد. براي تبديل ديتا از sp به هر كلاس سیم کارت رند معادلي مي تونيد با استفاده از Reflection يك متد عمومي ايجاد كنيد كه بتونه براتون هر نوع خروجي sp رو به كلاس معادل تبديل كنه.
> اما در نهايت بايد گفت كه روش هاي كه در سيلورلايت استفاده ميشه روش ها مدرن هست و به همين دليل روش هاي سنتي در اون كمي با زحمت ترن. اما اين اصلا ضعف محسوب نميشه. اين مثل اين ميمونه كه بگيد چون گوشي هاي جديد مادون قرمز ندارن پس داراي ضعف هستند. 
> ماكروسافت براي تكنولوژي هاي مختلفش انقدر tools و generator هاي ساده گذاشته كه وقتي شما به جايي ميرسيد كه tools ش كمتره فكر مي كنيد اين ضعفه.


سلام و ممنون درست شد

----------

