PDA

View Full Version : سوال: روش از SQL به LINQ



sadaf_
پنج شنبه 28 مهر 1390, 14:43 عصر
سلام
آیا روشی هست که select ی که در sql می سازیم رو به دستورات LINQ تبدیل کنیم؟

vbiman
پنج شنبه 28 مهر 1390, 15:06 عصر
اگر درست متوجه شده باشم شما می خواهید که از دستورات sql در LINQ استفاده کنید که برای این کار کافی هست که دستورات sql خودتون را در یک Stored Procedure ذخیره کنید و سپس مثل تصویر زیر آنها درگ کنید به سمت راست و جداول را هم به سمت چپ و بعد تغییرات انجام شده را ذخیره کنید .
یک نمونه کد برای نوشتن stored procedure:
CREATE PROCEDURE dbo.pSave @Row int, @Name nvarchar(20), @Family nvarchar(30)
AS
INSERT INTO Table1 VALUES(@Row, @Name, @Family)
RETURN
http://up9.iranblog.com/images/gauafkznnl3dg8ene8.png

و برای استفاده از این stored procedure ای که حاوی دستورات sql شماست کافی است در هر جا از برنامه تون از این کد استفاده کنید :
var db = new LINQDataContext();
db.pSave(Convert.ToInt32(txRow.Text), txName.Text, txFamily.Text);

vbiman
پنج شنبه 28 مهر 1390, 15:15 عصر
راستی برای select کردن هم در stored procedure میتونی به این صورت بنویسی :

CREATE PROCEDURE dbo.pSave @Row int
AS
SELECT * FROM Table1
WHERE Row=@Row
RETURN
در اینجا رکورد هایی انتخاب می شوند که فیلد ROW برابر یک مقدار خاص باشند که این مقدار را در موقع کدنویسی بهش میدی .

sadaf_
پنج شنبه 28 مهر 1390, 15:23 عصر
اگر درست متوجه شده باشم شما می خواهید که از دستورات sql در LINQ استفاده کنید که برای این کار کافی هست که دستورات sql خودتون را در یک Stored Procedure ذخیره کنید و سپس مثل تصویر زیر آنها درگ کنید به سمت راست و جداول را هم به سمت چپ و بعد تغییرات انجام شده را ذخیره کنید .
یک نمونه کد برای نوشتن stored procedure:
CREATE PROCEDURE dbo.pSave @Row int, @Name nvarchar(20), @Family nvarchar(30)
AS
INSERT INTO Table1 VALUES(@Row, @Name, @Family)
RETURN
http://up9.iranblog.com/images/gauafkznnl3dg8ene8.png

و برای استفاده از این stored procedure ای که حاوی دستورات sql شماست کافی است در هر جا از برنامه تون از این کد استفاده کنید :
var db = new LINQDataContext();
db.pSave(Convert.ToInt32(txRow.Text), txName.Text, txFamily.Text);

با سپاس از توچهتون یعنی شما می گید با این روش دیگه احتیاجی به این نیست که من دستورات sql رو در ویژوال بنویسم ؟
و اگر ج.واب شما مثبت است اون محیطی که بهش stored رو add کنم به صفحه منظورم همونیه که دورش رو خط کشیدین

vbiman
پنج شنبه 28 مهر 1390, 18:47 عصر
بله نیازی نیست ،شما زمانی که از ado.net استفاده می کنید مجبورید در بدنه دستورات ، کدهای sql را نیز بنویسید ولی زمانی که از linq استفاده میکنید فقط کافی است که یک Stored Procedure بنویسید و بعد اون رو در برنامه تون فراخوانی و مقدار دهی می کنین که این کار باعث میشه که حجم کدنویسی شما کاهش پیدا کنه .

sadaf_
پنج شنبه 28 مهر 1390, 19:39 عصر
من می خوام از این به بعد با روش linq کار کنم با این تفاوت که در sql فقط table ها وجود داره و همه view ها select ها و scrip ها و ... در کونویسی linq انجام بدم نظر شما در خصوص این روش چیه؟
حالا من برای استفاده از این روش باید بتونم scrip ی که در sql می سازم رو تبدیل کنم به دستور linq چطوری با این توضیحاتی که داده شده این مار رو انجام بدم؟

vbiman
جمعه 29 مهر 1390, 21:03 عصر
این یک pdf خیلی خوبه و برای شروع بکار خیلی مفیده :
http://www.itnee.com/Article/CSharp%20And%20SQLServer.zip

vbiman
شنبه 30 مهر 1390, 10:24 صبح
رمز فایل : itnee.com