PDA

View Full Version : سوال: مشورت:تفاوت ایجاد پروسیجر با تابع در LINQ



mazaher5723
شنبه 31 فروردین 1392, 16:28 عصر
سلام اساتید
تفاوت بین اینکه من درون دیتا بیسم یک پروسیجر واسه اضافه به جدول اضافه کنم و توی سی شارپ ازش استفاده کنم با اینکه من پروسیجر اضافه نکنم خودم یک تابع اضافه کردن به جدول با LINQ ایجاد کنم چیه ؟
کدم راه بهتره؟
چرا؟

Pis7Aller
شنبه 31 فروردین 1392, 16:31 عصر
کلا linq روش بسیار بهتری مخصوصا در شبکه ها ی بسیار بزرگه چون در حالت های عادی بخش عظمی از پردازش در داخل سرور و جایی که دیتا بیس قرار داره انجام میشه اما با روش linq میاد پردازش رو داخل client ها انجام میده و باعث میشه سرعت بسیار بالا بره

mazaher5723
شنبه 31 فروردین 1392, 16:34 عصر
چطور پردازشو توی کلاینت انجام میده خوب آخه دیتابیس جای دیگس؟؟!!!!روی سروره.(برا وب سایت میگما)

Pis7Aller
شنبه 31 فروردین 1392, 16:44 عصر
توی روش های عادی client یه در خواست میده .... به فرض مثال نشان دادن یکسری اطلاعات خاص و این دستور میره داخل جایی که سرور قرار داره و پردازش اونجا اتفاق میفته....... یه مثال بهتر :
SqlConnection sc = new SqlConnection(@"Data Source=.;Initial Catalog=DB1;Integrated Security=True");
SqlDataAdapter sda = new SqlDataAdapter(@"select * from t1", sc);
وقتی ما میایم و این دستور رو اجرا می کنیم ، دستور select ما میره داخل جایی که sql نصب هست (سرور) و کدی که داخل datadapter نوشتیم رو پردازس میکنه اما زمانی که واسه همین کار از linq استفاده می کنیم ..... در اولین اتصال سیستم client میاد و یک نمونه از دیتا بیس رو داخل خودش شبیه سازی میکنه . و بعد دستور select ما رو در داخل خودش انجام میده در آخر یکسری داده بدست میاد که احتیاج به نمایش دارند اون وقته که به دیتا بیس وصل میشه و مشخصا بدون انجام اون پردازش زیاد داده های خاص خودش رو انتخاب می کنه و به نمایش در میاره .... نمیشه گفت که تمام پردازش داخل client انجام میشه ولی بخش اعظمی از اون داخل client . امیدوارم تونسته باشم منظورم رو برسونم

mazaher5723
شنبه 31 فروردین 1392, 16:59 عصر
دوست عزیز فکر کنم منظورمو بد گفتم فک کن یک تابع تو سی شارپ تعریف کردی که با استفاده از LINQ تو جدول اضافه کنی حالا یکی دیگشم اینه که پروسیجرهای که توی sql ساختی باLINQ یهش دسترسی داری!!چه تفاوتی میکنه

Pis7Aller
شنبه 31 فروردین 1392, 17:40 عصر
شرمنده من موضوع رو بد فهمیدم ...... .....خیلی دنبال این موضوع تو جزوات و اینترنت و مغز خودم :D و ..... گشتم اما نتیجه ای نتونستم بدست بیارم که با اطمینان بگم که کدومش بهتره اما تو این بین چشمم به یک چیز جدیدی خورد که می گفتن این سریع ترین راه ممکن واسه insert کردن bulk insert که خودم برای اولین باره که بهش بر می خورم . اگر فقط نمی خواید از این دو استفاده کنید من این روش رو پیشنهاد می کنم .
جایی که برا اولین بار به این روش بر خوردم insert-data-into-sql-server-with-best-performance (http://stackoverflow.com/questions/2805390/insert-data-into-sql-server-with-best-performance)
MSDN : sqlblukcopy (http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy.aspx)

gwbasic
یک شنبه 01 اردیبهشت 1392, 07:38 صبح
بطور خلاصه کوئری ای که توسط sp اجرا می شه بدلیل کش کردن Execution plan در sql server از سرعت مناسبی برخوردار هست اما کوئری ای که با Linq to sql یا Entity Framework نوشته می شه بگونه ای تفسیر به دستور sql می شه که امکان کش شدن رو داره در نتیجه رفتاری مشابه sp داره و شما می تونید براحتی از اون استفاده کنید

دقت کنید هنگامیکه صحبت از کار با دیتابیس می کنید از Linq استفاده نکنید به طور صریح از Linq to Sql یا Entity Framework استفاده کنید. تفاوت اینها بارها در سایت توضیح داده شده!