כמה שאלות על תכנון DB
-
-
@dovid אמר בכמה שאלות על תכנון DB:
זה לא
List<Int32>
אלאListField<int>
שזה מחלקה של סרניטי כך שקשה לי לדעת איך "אוכלים" אותה.אם זה היה List<Int32> היה לך פתרון? או שאין כזה דבר..
-
-
@clickone זה לא נראה לי הבעיה, אפשר לנטרל את הספק ע"י עטיפת הuser.GroupId לint רגיל:
query.Where((user.GroupId ?? 0) == fld.GroupId);
(אני מניח שהint? זה הUser.GroupId).
ואני לא מזהה פה את דאפר, אולי הם משתמשים בו אבל ישנם בדרך הפשטות שאני לא יכול לעזור בהם.
-
@clickone זה לא נראה לי הבעיה, אפשר לנטרל את הספק ע"י עטיפת הuser.GroupId לint רגיל:
query.Where((user.GroupId ?? 0) == fld.GroupId);
(אני מניח שהint? זה הUser.GroupId).
ואני לא מזהה פה את דאפר, אולי הם משתמשים בו אבל ישנם בדרך הפשטות שאני לא יכול לעזור בהם.
-
פה https://github.com/volkanceylan/serenity-guide/blob/master/tutorials/multi_tenancy/handling_lookup_scripts.md
נראה שאמורים לעטוף את הערך עם מחלקה בשם Criteria -query.Where(new Criteria(user.GroupId) == fld.GroupId);
-
@dovid אמר בכמה שאלות על תכנון DB:
query.Where(new Criteria(user.GroupId) == fld.GroupId);
הפוך
query.Where(new Criteria(fld.GroupId) == user.GroupId);
@dovid אמר בכמה שאלות על תכנון DB:
הפוך
query.Where(new Criteria(fld.GroupId) == user.GroupId);Error CS0019 Operator '==' cannot be applied to operands of type 'Criteria' and 'int?'
עריכה:
הסתדר ב"ה!
השתמשתי בשילוב של@dovid אמר בכמה שאלות על תכנון DB:
אפשר לנטרל את הספק ע"י עטיפת הuser.GroupId לint רגיל:
query.Where((user.GroupId ?? 0) == fld.GroupId);תודה רבה רבה!
-
אז @clickone צדק. אשמח לראות את השורה הסופית כי לא לגמרי הבנתי את השילוב.
אני באתי להציע לך להיכנע ולכתוב User.GroupId.ToString() -
פה https://github.com/volkanceylan/serenity-guide/blob/master/tutorials/multi_tenancy/handling_lookup_scripts.md
נראה שאמורים לעטוף את הערך עם מחלקה בשם Criteria -query.Where(new Criteria(user.GroupId) == fld.GroupId);
@dovid אמר בכמה שאלות על תכנון DB:
פה https://github.com/volkanceylan/serenity-guide/blob/master/tutorials/multi_tenancy/handling_lookup_scripts.md
נראה שאמורים לעטוף את הערך עם מחלקה בשם Criteria -סליחה.
שחכתי אתמול לכתוב לך התנצלות על זה שרצת לקרוא את ה""תיעוד"" של סרניטי.
אני ממש לא התכוונתי לזה, קראתי לך ול @clickone , כי אתה מבין בSQL וC# (שחדש אצלי לגמרי), ו @clickone מבין בסרניטי (חוץ מהנ"ל).בכל אופן אני עדיין תקוע עם זה, כי זה לא עובד לי בינתיים, כנראה שזה לא אפשרי לסנן את זה בלי ForeignKey מוצהר.
אז כנראה אצטרך להוסיף query.LeftJoin, הבעיה שאני לא מצליח להבין את 3 הפרמטרים שהוא רוצה.
והתיעוד של סרניטי לא קיים... ניכר היטב שזה תוכנה מסחרית עם גירסה חינמית...public SqlQuery Join(Join join); public SqlQuery LeftJoin(IAlias alias, ICriteria onCriteria); public SqlQuery LeftJoin(string toTable, IAlias alias, ICriteria onCriteria); public SqlQuery OrderBy(IAlias alias, string fieldName, bool desc = false);
מה זה ה alias?
עריכה:
namespace Serenity.Data { public interface IAlias { string Name { get; } string NameDot { get; } string Table { get; } } }
-
אז @clickone צדק. אשמח לראות את השורה הסופית כי לא לגמרי הבנתי את השילוב.
אני באתי להציע לך להיכנע ולכתוב User.GroupId.ToString()@dovid ו @clickone תודה רבה!!
בעיה מספר 1 נפתרה!למעשה לא הסתדרתי עם הTYPE alias, (ז"א מצאתי מה הוא רוצה = אוביקט Fields, אבל זה תמיד רשם לו T0 בכינוי בSQL, גם כשהפניתי ל Fields של הטבלה השנייה).
בסוף הצהרתי על ה LEFT JOIN במקום אחר, שהוא כן נותן לי להזין מחרוזת ב פרמטרים, רשמתי לו alias אחר, וזה עובד!