אכן,, אני משתמש בORM שלהם
מעלות:
1. הORM של טלריק [להלן DA] מהיר יותר וזה ניכר מאד באתחול הראשוני, זמן הטעינה של EF ארוך מאד!
2. האוספים הם IQueryable ולא DbSet, ולכן קל לעשות מוקינג. אמנם היתרון הזה אמור להתבטל בEF7 שתומך בהזרקת InMemory במקום הDb האמיתי.
3. פרופיילר מעולה שמנטר את השאילתות שיוצאות לDB.
חסרונות:
1. אין תמיכה באסינכרוניות. [אפשר לעשות Task.Run, אבל אתה עלול להתנגש בת'רד אחר שבדיוק סגר את הקונקשיין]
2. מיפוי CodeOnly איננו חלק ואוטומטי כמו בEF. תכל'ס, בסוף אני מוצא את עצמי ממפה את כל השדות ולא סומך על הדיפולטים.
3. לDA אין דבר מקביל לCollection.Local. זה משמעותי ביישומי Desktop כמו WPF או WinForms. הנה דוגמא פשוטה בEF:
myContext.Products.Load();myDataGrid.ItemsSource = myContext.Products.Local;
ואז, אם מוסיפים או מוחקים רשומה בDataGrid, זה מסתנכרן לקונטקסט.
לעומת זאת, בDA האוספים הם IQueryable, ובכלל אין להם Add וDelete, [מחיקה או הוספה של אובייקטים נעשית מול הקונטקסט], ולכן עלי ליצור ObserveableCollection ולסנכרן אותו מול הDB.
סתם, בשביל האינטלגנציה, שתי הספריות עובדות בצורה שונה. EF יוצר מאחורי הקלעים מחלקה יורשת מהמודל שלנו, ולכן אסור שהמודל יהיה sealed [בדיבוג רואים שהטייפ של המחלקה הוא Product_HGRRHH65674HGRHER].
לעומת זאת, DA איננו יורש מהמודל, אלא פורץ אותו ושותל בו מתודות.
שתי הדרכים מלוכלכות מאד, ואולי היה צריך לפתור את הבעיה מן היסוד דרך .net: ליצור סוג מחלקה מיוחד שיודע לתעד את השינויים ולשמור סטייט.