ביצוע שאילתא בlinq

21 ביוני 2012

אין תגובות

להלן הסברים  מפורטים (מדי…) בתרגום חופשי:

מטרת השאילתא:

לשלוף מוצרי הצעת מחיר של הצעת מחיר מסוימת ואת קוד המוצר עבור כל
מוצר הצעת מחיר ולאכסנם באובייקט ייעודי
(class) שיצרנו.

לצורך השליפה יצרנו List
 של אובייקטים מסוג
ImportProductTableDataItem
(שם
ה
class)

ישויות מעורבות בשאילתא : מוצר(product)  ומוצר הצעת מחיר (quotedetail).  

From  -מגדיר את הישות הראשית בשאילתא (from p in
orgContext.CreateQuery(
"product"))

Join
 
 מגדיר את הישות המצורפת(join qd in
orgContext.CreateQuery(
"quotedetail"))

On   -מגדיר את הקשר בין הישויות   (on p["productid"] equals qd["productid"])שדה קוד מוצר במוצר הזמנה == לקוד המוצר(מפתח ראשי)

Where-מגדיר תנאים ופילטורים
כלליים על השאילתא : שליפת מוצרי הצעת מחיר מסוימת לפי המפתח הראשי של הצעת המחיר
(Guid)(
qd.GetAttributeValue<Guid>("quoteid") == new Guid(m_entityId)
)

Select-מגדיר את השדות הנשלפים ואכסונם באובייקט.

הסרוויס שמשתמשים לצורך השאילתא הוא: OrganizationServiceContext

OrganizationServiceContext
orgContext = new
OrganizationServiceContext(_serviceProxy)

 

 

צורת השליפה הזו טובה גם לשליפת ישות אחת. (בלי join)

GetAttributeValue<Guid>("quoteid") –מיועד
לשליפת שדות והמרתם ל
type  מסוים

לא חייבים להמיר לאובייקט את הישויות הנשלפות.

הדיפולט שהquery  מחזיר הוא IEnumerable של הישות הנשלפת וניתן להמירו
לליסט או למערך או לשלוף את האובייקט הראשון\אחרון בליסט (מיועד למקרים שבהם נשלפת
רשומה אחת בלבד)
(FirstOrDefault())

וניתן גם לעבוד עםearly bound  (ולמי שלא מכיר את המושג- יבואו הסברים בהמשך)

לדוגמה:

 

IEnumerable<SystemUser>
systemUsersInum = from systemUsers in orgContext.CreateQuery<SystemUser>()

                   
                                      where systemUsers.DomainName == CurrentUserName

                                                         
select systemUsers;

               
if (systemUsersInum.Count() > 0)

               
{

                   
CurrentUserId = systemUsersInum.FirstOrDefault().Id;

               
}

הוסף תגובה
facebook linkedin twitter email

כתיבת תגובה

האימייל לא יוצג באתר. (*) שדות חובה מסומנים