مثالی برای فراخوانی اطلاعات تکمیلی از پایگاه داده توسط API (با استفاده از تکنیک ناظر یا watch)

نحوه استفاده از ناظر (watch) در طراحی فرم ها

زمانی که بخواهیم بر روی مقادیر موجود در فرم مانیتور قرار دهیم (Watching Variable) تا با تغییر آنها اطلاعاتی را بلافاصله واکشی و از آنها استفاده کنیم (Output Variable) از ناظر یا watch استفاده می‌کنیم. فرض کنیم  بر روی فرم یک لیست باز شونده (Select List) قرار دادیم و آنرا از طریق روش‌های ذکر شده در بخش یکپارچه‌سازی با سایر منابع اطلاعاتی، به اطلاعات یک جدول در پایگاه داده‌ای متصل کردیم و فرضا لیست کالاها را در آن نمایش می‌دهیم.

اگر بخواهیم که با انتخاب هر کالا توسط کاربر به عنوان مثال موجودی کالا از پایگاه داده فرخوانی شود می‌توانیم بر روی کنترل لیست باز شوند یک ناظر یا Watch فعال کنیم.

بیاییم همین مثال را باهم بصورت عملی بررسی کنیم:

در این مثال می‌خواهیم با استفاده از یک لیست بازشونده و با کمک ناظر، قیمت و تعداد موجودی را از طریق ارسال کد کالا و دریافت اطلاعات از پایگاه داده با استفاده از دو روش اتصال مستقیم به پایگاه داده و یا استفاده از WebApi توضیح دهیم.

روش اتصال ناظر به صورت مستقیم به پایگاه داده

همانطور که در تصویر ذیل مشاهده می‌کنید، نام متغیر متناظر با کنترل حاوی لیست خودرو ها، cars می‌باشد و می‌خواهیم روی تغییر این متغیر یک ناظر تعریف کنیم.

روی دکمه ناظر کلیک می‌کنیم و یک ناظر جدید تعریف می‌کنیم. در بخش نام ناظر یک نام برای ناظرمان وارد می‌کنیم.

حال نام متغیر cars را در بخش Variable to watch مشابه شکل بالا وارد می‌کنیم.

پس از تعریف نامی برای نام ناظر و اینکه ناظر بر روی کدام متغیر فعال باشد، به بخش source وارد می‌شویم.

در بخش source گزینه Data Source را انتخاب می‌کنیم، سپس از فهرست سرویس دهنده‌های تعریف شده در بخش یکپارچه سازی، سرویس مورد نظر و از بخش گذرگاه نیز گذرگاه تعریف شده را بر می‌گزینیم.

قبل از ادامه کار با هم نگاهی به سرویس دهنده و گذرگاه انتخاب شده نگاهی خواهیم داشت.

همانطور که در شکل ذیل مشاهده می‌کنید، سرویس دهنده انتخاب شده، یک سرویس برای اتصال به پایگاه داده Sql Server می‌باشد.

و یک گذرگاه برای واکشی اطلاعات برای مشاهده لیست خودروها تعریف کرده‌ایم. دقت کنید پارامتری که از سمت فرم برای فیلتر اطلاعات ارسال خواهد شد ( در اینجا پارامتر id )، می‌بایست در Query درج شده در بخش گذرگاه وجود داشته باشد.

حال پس از تعریف سرویس دهنده و گذرگاه تعبیه شده، مجددا به بخش تعریف ناظر بر می‌گردیم.

همانطور که در بالا ذکر شد، پارامتری که از سمت فرم به Query ارسال خواهد شد (مقدار cars)، در پارامتر id قرار خواهد گرفت که لازم است آن را به ترتیبی که در تصویر ذیل مشاهده می‌کنید، در بخش Input Data معرفی شود.

در ادامه به بخش  Output وارد می‌شویم.  در این بخش یک متغیر در Output Variable تعریف می‌کنیم تا مقادیر بازگشتی در آن قرار گیرد (در اینجا متغیر info).

با کلیک بر روی گزینه ذخیره، ناظر را برای دریافت مقادیر ذخیره می‌کنیم.

حال ما برای چاپ مقادیر بازگشتی از ویرایشگر متن استفاده کرده‌ایم، و آن را به صورت زیر تعریف می‌کنیم:

نتیجه کار با تعییر مقادیر لیست خودرو ها به صورت ذیل خواهد بود:

روش اتصال ناظر به Web Api

در این روش تمامی مراحل مانند نمونه ذکر شده در روش قبلی بوده، فقط در بخش تعریف ناظر، سرویس دهنده و گذرگاه را به سرویس دهنده و گذرگاه مورد نظر از نوع Web Api می‌باشد تنظیم می‌کنیم.

دقت کنید که خروجی تعریف شده در می‌بایست می‌بایست به صورت Json باشد.

ایست می‌بایست به صورت Json باشد.

نمونه کد برای واکشی اطلاعات از طریق Api نوع C#:

[System.Web.Http.HttpPost]
[System.Web.Http.Route("cars/getCarInfo")]
public JObject getCarList([FromBody] dynamic data)
{
using (var db = new rockfaEntities())
   {
   	var query = string.Format(@"SELECT [id], [name], [qty], [price] FROM [dbo].[carList] WHERE id = {0}", data.id);
   	var result = db.Database.SqlQuery<carList>(query);
   	var re = JsonConvert.SerializeObject(result, null, new JsonSerializerSettings() { Formatting = Formatting.None });
   	JArray jsonArray = JArray.Parse(re);
   	return JObject.Parse(jsonArray[0].ToString());
   }
}