View Full Version : در domainservice [Ignore] و [Invoke] چیست لطفا اگر کسی چیزی یا مطلبی داره برام بزاره ممنون می شم
shahramasp
دوشنبه 16 بهمن 1391, 17:48 عصر
در domainservice
[Ignore] و [Invoke] چیست لطفا اگر کسی چیزی یا مطلبی داره برام بزاره ممنون می شم
sia_2007
سه شنبه 17 بهمن 1391, 06:21 صبح
Ignore باعث می شود متد شما در سمت کلاینت دیده نشود
Invoke برای فراخوانی مجزای متد با چندین پارامتر استفاده می شه
بهتره ویدئوهای WCF RIA Services رو از Pluralsight بگیری
hakim22
سه شنبه 17 بهمن 1391, 18:04 عصر
در WCF RIA Service یک سری قواعد نام گذاری وجود دارد.
مثلا هر متدی که با Inser ، Create و یا Add شروع شده باشد برای بروز رسانی دیتابیس مورد استفاده قرار خواهد گرفت. وقتی متدی با این عبارات شروع شود WCF به لایه ی زیرین (که معمولا Entity Frame Work است) اطلاع رسانی می کند که رکوردی قرار است تغییر کند. همه ی تغییرات در این لایه انجام میشود و بعد با استفاده از submitchanges تغییرات اعمال میشوند. و بعد EF تغییرات را در دیتابیس اعمال می کند.
در تمامی مراحل بالا ChangeSet همیشه میتواند به شما گزارش کند که تغییرات اعمال شده در دیتابیس به چه نحوی است. برای مدیریت Concurrency Violation که از این مقوله استفاده میشود.
وقتی دو کاربر هم زمان در حال مشاهده یک رکورد هستند و اولی آن را تغییر دهد و بعد دومی هم آن را تغییر دهد،در نهایت داده ی کاربر دوم در دیتابیس ذخیره میشود. به این مشکل Concurrency Violation گفته میشود.
ما باید راهی داشته باشیم که به کاربر دوم اطلاع دهیم که داده هایی که قصد ثبت در دیتابیس دارد بعد از آنکه شروع به مشاهده ی آنها کرده ، تغییر کرده اند. اینکار با استفاده از ChanegeSet در شی ChangeSetEntery صورت می گیرد. که تمام رکوردها و فیلدهای تغییر کرده ، نسخه ی اصلی ، نسخهی جاری و نسخهی ذخیره شده را نگاه میدارد.
حالا :
اگر شما یک متد غیر از Query و CRUD داشته باشید بهتر است آن را با Invoke علامت گذاری کنید. Invoke باعث میشود که مراحل کنترل تغییرات فیلد مدیریت نشوند و ChangeSet تغییراتی را ثبت نکند. و شما میانبر میزند.
کاربرد این حالت زمانی است که میخواهید یک سری محاسبات روی دادهای بانک انجام دهید و برای اینکار به فیلدهایی از چند جدول مختلف احتیاج دارید و نه یک رکورد خاص از یک جدول خاص.
در مورد Ignore :
همانطور که گفتم نام گذاری متدها در WCF RIA Service بر مبنای فرمول خاصی صورت میگیرد. هر متدی با اسامی Delete ، Add ، Update و امثالهم شروع شود به WCF اعلام میکند که آماده ی اعمال عملیاتی در دیتابیس باشد.
حالا اگر خدای نکرده شما قصد داشتید یک متدی داشته باشید که با Update شروع میشد ولی هدفتان بیدار کردن شیر خوابیده آن پشت سر نبود ! باید اول Ignore را بنویسید تا WCF متد شما را جدی نگیرد.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.