כמה שאלות על תכנון DB
- 
משהו כזה
SELECT Customers.* FROM Customers LEFT JOIN Shiluv ON Shiluv.Snif = Customers.Snif WHERE Shiluv.Group = @currentUserGroup@dovid אמר בכמה שאלות על תכנון DB:
משהו כזה
SELECT Customers.* FROM Customers LEFT JOIN Shiluv ON Shiluv.Snif = Customers.Snif WHERE Shiluv.Group = @currentUserGroupתודה רבה!
ואיך אני מקבל באותו משפט את currentUserGroup כשאני יודע רק את ה currentUserID?
במקרה שלא אצליח לדחוף את הUserGroup לזכרון. - 
@dovid אמר בכמה שאלות על תכנון DB:
משהו כזה
SELECT Customers.* FROM Customers LEFT JOIN Shiluv ON Shiluv.Snif = Customers.Snif WHERE Shiluv.Group = @currentUserGroupתודה רבה!
ואיך אני מקבל באותו משפט את currentUserGroup כשאני יודע רק את ה currentUserID?
במקרה שלא אצליח לדחוף את הUserGroup לזכרון.SELECT Customers.* FROM Customers INNER JOIN Shiluv ON Shiluv.Snif = Customers.Snif INNER JOIN Users ON Users.Group = Shiluv.Group WHERE Users.Id = @currentUserIdאו
SELECT Customers.* FROM Customers LEFT JOIN Shiluv ON Shiluv.Snif = Customers.Snif WHERE Shiluv.Group = (SELECT TOP 1 Group FROM Users WHERE Id = @currentUserId)ייתכן שאני טועה קלות בתחביר אבל זה הרעיון.
 - 
SELECT Customers.* FROM Customers INNER JOIN Shiluv ON Shiluv.Snif = Customers.Snif INNER JOIN Users ON Users.Group = Shiluv.Group WHERE Users.Id = @currentUserIdאו
SELECT Customers.* FROM Customers LEFT JOIN Shiluv ON Shiluv.Snif = Customers.Snif WHERE Shiluv.Group = (SELECT TOP 1 Group FROM Users WHERE Id = @currentUserId)ייתכן שאני טועה קלות בתחביר אבל זה הרעיון.
@dovid תודה רבה!
למעשה הצלחתי להכניס את המזהה קבוצה לזכרון.אבל יש לי בעיה אחת, בעצם הצלחתי לשלב בטבלת הלקוחות שדה מזהה קבוצה, הבעיה שזה שדה מסוג
List<Int32>והמזהה קבוצה המקורי הוא מסוג:
Int32?וכשאני מנסה לסנן אותו:
protected override void ApplyFilters(SqlQuery query) { base.ApplyFilters(query); var user = (UserDefinition)Authorization.UserDefinition; query.Where(user.GroupId == fld.GroupId); }אני מקבל שגיאה:
Error CS0019 Operator '==' cannot be applied to operands of type 'int?' and 'ListField<int>' - 
 - 
@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() 
