ورود

نسخه کامل مشاهده نسخه کامل : استفاده از T-Sql در Linq



misoft
03-05-2010, 06:08
سلام
دوستان چه طوری میشه یه دستور T-Sql را با لینک اجرا کرد؟مثلا دستور
"select [name] from master.dbo.sysdatabases" .
اگر نمیشه ، آیا linq تمام قابلیت های T-Sql را داره؟یعنی میشه با فراگیری linq به کلی از T-Sql صرف نظر کرد؟
آیا سرعت استفاده از روش متودی با روش قدیمی در Linq تفاوتی داره؟

misoft
04-05-2010, 21:45
سلام
دوستان لطفا کمک کنید.

_H2_
09-05-2010, 01:42
سلام
وقت کافی ندارم و به اختصار جواب میدهم ...
LINQ اصلاً جایگزین یا رغیب SQL نیست و قرار هم نیست که بشود، هر کدام در جای خود مورد استفاده دارند ...
LINQ بیشتر برای کار روی اشیا داخل محیط برنامه نویسی است و SQL زبان ساختار یافته سفارشی هر بانک اطلاعاتی است.

البته فریم ورک مجهز به یک مکانیزم است که در شرایطش میتواند خودکار دستورات LINQ را به SQL تبدیل و روی دیتابیس اجرا کنید ولی این جایگزین کاملی برای فراموش کردن SQL نیست.
مطمئن باشید در ان شرایط هم کد سفارشی SQL که برنامه نویس نوشته (و بهتر از ان در یک SP دیتابیس هم ذخیره کرده) بسیار بهتر از فرآیند و نتیجه تبدیل LINQ به SQL است.

محدوده سلطنت LINQ در داخل محیط runtime برنماه و محدوده سلطنت SQL در داخل دیتابیس است و هر کدام برای کاربد خودشان بهترین هستند.
شب بخیر.

misoft
09-05-2010, 09:21
سلام
خیلی ممنون که پاسخ دادید.
آیا روشی هست که کد تولید شده در دستور مثلا Select را که با LINQ نوشته شده بدست آورد؟
من برای این کار از دستور Log شی DataContext استفاده کردم اما به مشکل برخودم.

_H2_
01-06-2010, 00:36
سلام
میبخشید تقریبا فراموش کرده بودم ...

من برای این کار از دستور Log شی DataContext استفاده کردم اما به مشکل برخودم.
بله راهش همین است.
مثلا یک نمونه TextWriter تعریف میکنید و با تخصیص به Log از دستور ساخته شده مطلع خواهید شد.
ولی در حالت معمول شما نیازی به این دستور نخواهید داشتف چون جزء کارهای داخلی خود فریم ورک جهت تبادل و تبدیل اطلاعات است.

چه مشکلی داشتید؟
یعنی دستور SQL ساخته نمیشد؟ ولی کد کار میکرد؟
اگر خطایی هم دریافت کرده اید، اطلاعات کامل خطا را اینجا قرار دهید.

میبخشید و موفق باشید.

misoft
02-06-2010, 21:58
سلام
خیلی ممنون که پاسخ دادید.
درسته که این کارها رو خودش انجام میده ولی فکر میکنم دونستن کدهای تولیدی LINQ میتونه درک بهتری از LINQ به من بده.

من از کد زیر برای بدست آوردن کد SQL یک دستور LINQ استفاده میکنم.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
دستور اجرا میشه ولی کد تولیدی رو نمیتونم ببینم.
خطایی که برمیگردونه اینه:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
با تشکر از لطف دوستان به خصوص جناب -H2-

_H2_
06-06-2010, 22:21
سلام
شما یک کم برعکس کار کرده اید!
خدمتتان عرض کردم...

... یک نمونه TextWriter تعریف میکنید و با تخصیص به Log از ...

شما دقیقاً برعکس این آمده اید یک TextWriter را از Log پر کرده اید!!!

ضمناً استفاده از تابع ToList هم چندان نیاز نبوده.
در مجموع این کد را امتحان کنید:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

misoft
08-06-2010, 06:17
سلام
خیلی ممنون
با این خط مشکل دارم.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
من نمیدونم از کدوم OverLoad اون استفاده کنم.
از چندتاش استفاده کردم ولی در مسیج باکس متن "System.IO.StreamWrite" رو برمیگردونه

_H2_
11-06-2010, 21:58
سلام
میبخشید حواسم نبود، از کلاس StringWriter باید استفاده کنید که خودش مخزن است.
(به جای StreamWriter)