کوئری گرفتن دستی در mvc کنترلر
با سلام
من قصد دارم در کنترلر پروژه MVC یک کوئری بگیرم از دو جدول Problem و Answer که در پایگاه داده SQL تعریف شده و پایگاه داده را به پروژه اضافه کردم.
کوئری به این صورت است
string query = "select * from Problems where Problems.Id=Answer.Num_Problem and Problems.Servic_id=" + ServiceSelected + " and Problems.Date_Problem>=N'" + firstDate + "' and Problems.Date_Problem<=N'" + lastDate + "'";
یک ViewModel تعریف کردم که شامل دو جدول نام برده می باشد و از آن یک متغیر model گرفته ام.
حال نوشتن صحیح این دستور را نمیدانم:
model = db.Database.SqlQuery<>(query).ToList();
نمیدانم به sqlquery چه objectی باید اختصاص دهم...
3 پاسخ
ممنون از پاسخ شما من این کار را انجام دادم اما با این error در این دستور روبه رو میشم
var result = db.Database.SqlQuery<vis_ihio.ViewModels.testviewmodel.problemReport>(query).ToList();
Additional information: The multi-part identifier "Answer.Num_Problem" could not be bound.
این کوئریم:
string query = "select Problems.User_id,problems.Date_Problem,problems.Tell,problems.Desc_Problem,Answer.ExpertName,Answer.Desc_Answer,Answer.Duration_Answer from Problems where Problems.Id=Answer.Num_Problem and Problems.Servic_id=" + ServiceSelected + " and Problems.Date_Problem>=N'" + firstDate + "' and Problems.Date_Problem<=N'" + lastDate + "'";
و این هم مدل:
public partial class problemReport { [ScaffoldColumn(false)] [Bindable(false)] public int id { get; set; } public int User_id { get; set; } public string Tell { get; set; } public string Date_Problem { get; set; } public string Desc_Problem { get; set; } public string ExpertName { get; set; } public string Duration_Answer { get; set; } public string Desc_Answer { get; set; } }
Num_Problem داخل property های مدلتون تعریف نشده
سلام و عرض ادبُ برای استفاده از متد SqlQuery، شما ابتدا باید مبتنی بر خروجی کوئری یک Model ایجاد کنید، یعنی به ازای هر ستونی که در خروجی کوئری هست یک Property داخل یک کلاس، برای مثال:
public class QueryOutput { public int Id {get;set;} public string Name {get;set;} }
وقتی Model رو تعریف کردید به صورت زیر از متد SqlQuery استفاده کنید:
var result = db.Database.SqlQuery<Models.QueryOutput>(query).ToList();
خروجی بالا یعنی متغیر Result یک لیست از نوع QueryOutput هست که می تونید از این خروجی استفاده کنید.