דרך מהירה וקלה להמיר מידע מהDB לאוביקט

rebull

New member
דרך מהירה וקלה להמיר מידע מהDB לאוביקט

היי, כמו שהכתורת אומרת, אני מחפש דרך קלה ומהירה להמיר את הנתונים מהDB לאוביקט של המערכת.
אני לא רוצה לעבור על כל field וכל column ופשוט לשפוך אותם לאוביקט.
בדקתי את השימוש בLINQ, אבל לא הצלחתי למצוא דרך להשתמש בSP וגם להחזיר רק חלק מהערכים באוביקט מבלי
א. להפיל את המערכת.
ב. ליצור אוביקט חדש עבור כל SP לדוגמא: SP1_Result)

מה אתם אומרים?
מכירים דרך טובה יותר?
 

imitsu

New member
EF

לא רשמת עם מה אתה עובד.. אז גם התשובה שלי היא בגדול..
entity framework
ואז לכל ישות ב-DB יש יצוג כמחלקה..

(בהנחה שהבנתי נכון מה אתה רוצה לעשות..)
 

rebull

New member
בדקתי את הנושא של EF

אבל עם EF, יש בעיה שאם אני שולף רק חלק מהרשומה, אני מקבל שגיאה ובנוסף יש בעיה אם JOINS.
חשבתי לבחון את האפשרות של POCO לראות כיצד זה פותר את הבעיה.
 

arielRuuubi

New member
תגידו EF מביא גם ישויות מVIEWS?

כי אם כן אולי זה יפתור לו את הבעיה?
 

IamStalker

New member
Views זה UI , רמת ה- EF + SP

זה לפני ה-UI.

תזכור מה אמרתי לך בפגישה, לפני שאתה יורה תשובות, תחשוב טוב!
 

ziv1f

New member
גם ב-DB יש VIEWS...


שהם למעשה שאילתות שמשתמשים בהן לעתים קרובות ומעוניינים לשלוף מהן נתונים כיחידה אחת.

כיום זה כבר כמעט ולא נמצא בשימוש, אני כתבתים הרבה מאד VIEWS לבסיסי נתונים בחיים שלי, וגם פרוצדורות שונות ומשונות. הבעיה היא באמת שאם בונים VIEW שיש לתוצאות שלו נתונים מכמה טבלאות, צריך לייצר אובייקט במיוחד שיכיל את הכל, ואז מאבדים את כל היתרון שיש ב-EF, ומאידך כל מה שהוא עושה זה JOIN בין טבלאות, שאת זה EF יודע לעשות יופי, ככה שלרוב כבר לא צריכים אותם, ומה שבכל זאת צריך עושים ב-SP או ב-stored function.

בברכה,
זיו
 

IamStalker

New member
מצטער, חשבתי שהתכוונת ל-UI Views

אכן EF יודע להתמודד גם עם Materialized Views , הוא לא יודע להתמודד בצורה טובה עם Anonymous שזה חיסרון, ב-EF5 שעבר שינוי משמעותי ישנה יכולת כזו.
 

arielRuuubi

New member
ובכן - אני אפילו לא יודע שיש 2 סוגים :-O

מה זה כ"א מהם?
אני מכיר את זה בMYSQL שאתה עושה איזו שאילתא מורכבת ואז אתה מתייחס אליה כמו טבלה כגון
select * from myview
 

IamStalker

New member
שני סוגים?
יש יותר

ב-DB יש מעל 2
Fixed View
Dynamic View
Materialized View
ב-MSSQL תצתרך לבדוק לבד.

כל זה לשיפור performance
 

rebull

New member
לא ראיתי שימוש בSP בDapper.net

הכוונה שלי היא לכתוב קוד שיעיל מבחינת ביצועים ונוח מבחינת קידוד עד כמה שאפשר.
במידה ולא משתמשים בSP, אפשר פשוט לכתוב קוד linq ב.net
 

rebull

New member
מה שחשבתי לעשות,

זה ליצור את הPOCO ולמפות אותו לטבלאות המתאימות בצורה חופשית יותר (לא לשים required על השדות) וככה הSP יכול היה להחזיר לי מה שאני רוצה.

לגבי הdapper, זה יפה שאפשר להשתמש בSP, אבל מה קורה אם הSP מחזירה רק חלק מהשדות של האובייקט מה קורה אם היא מחזירה JOIN אם אובייקט אחר? איך המיפוי יתבצע?

זאת יותר בעיה כללית אם ORM בכלליות.
מה שאני מחפש זאת דרך נוחה למפות את הDB שלי לאובייקט.
אם יש לי אובייקט מסוג user ולא יש מאפיין מסוג userType, איך אני יכול למפות שאילתא שמבקשת userName, typeId,typeName ועוד... לתוך יוזר?
 

IamStalker

New member
אני אנסה שוב,

Dapper.NET משתמש עם ExpandoObject לצורך העיניין אתה לא צריך למפות שום דבר לצורך ה-SP שלך.
מעידך יש לך אפשרות לייצר Modelים ב-Dapper שהם Strongly typed וכך לייצר CLR objects מבלי לדאוג לדינאמיות.

אני מקווה שהייתי יותר ברור.
 

rebull

New member
בדקתי את זה

וזה אכן נראה מגניב.
לא מודע כמה אני אוהב לעבוד בלי ינטליסנס.
אבל בכל זאת מגניב.
תודה.
 

IamStalker

New member
תתרגל, חוץ מזה אתה מרוויח מהירות

והרבה מאוד יכולות שאין ל-EF.
 

rebull

New member
אבל למה לא פשוט להשתמש בexpando

למה אני צריך class של מישהו אחר שאני לא באמת יודע מה היא עושה ולפי מה שראיתי היא לא תמיד עושה את הדבר הנכון (יעיל).
ההמרה של datatable לexpando זה שורות בודדות של קוד. כל המסביב מיותר.
 

IamStalker

New member
תרשה לי לומר כמה דברים,

אני לא יודע מה הרמה התיכנותית שלך, לכן אגיד לך:
אם Stackoverflow יושבת על Dapper.NET, זהו ORM שנכתב ע"י אחד המפתחים הבכירים שלה - Sam Saffron, ועוד כמה חברה...
אינני יודע אם אתה מסוגל לכתוב מערכת כזו לבד, לא בגלל שאני לא מאמין ביכולות שלך, פשוט בגלל שאלה חברה הכי מובילים בתחום ה-NET.
לכן תראה אם אתה מסוגל לכתוב יעיל יותר מהם, לשיקולך.
 
למעלה