PDA

View Full Version : تبدیل کدهای انتیتی به کدهای ADO.NET در اسکیوال سرور



safari_m4
دوشنبه 31 اردیبهشت 1403, 23:49 عصر
با سلام و سپاس و خسته نباشید دوستان چگونه این کدها را در ADO.NET بنویسم

ReminderList = db.Reminders.Where(c => c.ScheduleType == "OneTime" && string.Compare(c.ReminderDate, date) <= 0 && c.LastReminderDate == null
c.ScheduleType == "Daily" && c.LastReminderDate != date ||
c.ScheduleType == "Weekly" && c.WeekDay.Contains(dayOfWeek.ToString()) && c.LastReminderDate != date ||
c.ScheduleType == "Monthly" && c.MonthDay == dayOfMonth && c.LastReminderDate != date ||
c.ScheduleType == "Yearly" && c.MonthNumber == monthNumber && c.MonthDay == dayOfMonth && c.LastReminderDate != date).ToList();

بیشترین مشکل من اون قسمت شرطش می باشد که می خوام در یک استرپروسیجر استفاده کنم با تشکر مجدد

پرستو پارسایی
جمعه 04 خرداد 1403, 19:41 عصر
برای نوشتن کد مذکور با استفاده از ADO.NET و اجرای آن در یک Stored Procedure، شما می‌تونید از سینتکس T-SQL و پارامتر‌های استفاده کنید. این کد را در توابع یا Stored Procedure خود در دیتابیس SQL Server تعریف کنید.

CREATE PROCEDURE GetReminders
@date NVARCHAR(50),
@dayOfWeek INT,
@dayOfMonth INT,
@monthNumber INT
AS
BEGIN
SELECT * FROM Reminders
WHERE (ScheduleType = 'OneTime' AND ReminderDate <= @date AND LastReminderDate IS NULL)
OR (ScheduleType = 'Daily' AND LastReminderDate <> @date)
OR (ScheduleType = 'Weekly' AND CHARINDEX(CAST(@dayOfWeek AS NVARCHAR), WeekDay) > 0 AND LastReminderDate <> @date)
OR (ScheduleType = 'Monthly' AND MonthDay = @dayOfMonth AND LastReminderDate <> @date)
OR (ScheduleType = 'Yearly' AND MonthNumber = @monthNumber AND MonthDay = @dayOfMonth AND LastReminderDate <> @date)
END

اینجا، یک Stored Procedure به نام GetReminders تعریف شده که پارامترهای مورد نیاز را دریافت می‌کنه و بر اساس شرایط مشابه کد LINQ شما، اطلاعات مورد نیاز را از جدول Reminders بازیابی می‌کنه

حالا می‌تونید این کد را در دیتابیس خود اجرا و از طریق ADO.NET آن را صدا بزنید تا نتایج مورد نظر را دریافت کنید.