עבודה עם DbContext בפרוייקט webapi
אני מחפש מידע על איך לנהל life cycle של Dbcontext בתוכנית webapi (נטו webapi).
כרגע אני מעביר אותו ל logic layer במצאות injection והlifestyle שלו הוא PerWebRequest, כלומר הזמן חיים שלהם הוא קצר מאוד, מקסימום אורך הweb request.
אבל נוצר מצב אבסורדי שה logic שלי מלא בכל מיני עבודות וקריאות מול ה dbcontext, מה שפוגע ביכולת שלי לבדוק את הקוד על ידי unit tests (אלא אם כן אני עושה mock ל dbcontext עצמו ולהזריק אותו במקום ה dbcontext האמיתי)
איך ניתן בצורה הגיונית להפריד בין ה data access לבין הlogic מצד אחד ומצד שני להמנע ממצב של פתיחת כמה contexts במקביל בקריאה אחת, להמנע ממצב שSaveChanges לא חבוי לי, כלומר לי יש שליטה מלאה על הunit of work מתי הוא מתחיל ומתי הוא נגמר. וגם אפשרות לפתוח טרנסאקציות (כרגע לא צריך, אבל אני לא רוצה להגביל את עצמי בעתיד)
קראתי את הפוסט שנתן לי מושג של מה לא לעשות ולמה. הוא גם ניסה לתת רעיון של מה כן לתת, אבל אני לא בטוח שהצלחתי להבין את הכיוון שלו.
מהניסיון שלכם, איך עשיתם את זה בפרוייקטים שלכם?
אני מחפש מידע על איך לנהל life cycle של Dbcontext בתוכנית webapi (נטו webapi).
כרגע אני מעביר אותו ל logic layer במצאות injection והlifestyle שלו הוא PerWebRequest, כלומר הזמן חיים שלהם הוא קצר מאוד, מקסימום אורך הweb request.
אבל נוצר מצב אבסורדי שה logic שלי מלא בכל מיני עבודות וקריאות מול ה dbcontext, מה שפוגע ביכולת שלי לבדוק את הקוד על ידי unit tests (אלא אם כן אני עושה mock ל dbcontext עצמו ולהזריק אותו במקום ה dbcontext האמיתי)
איך ניתן בצורה הגיונית להפריד בין ה data access לבין הlogic מצד אחד ומצד שני להמנע ממצב של פתיחת כמה contexts במקביל בקריאה אחת, להמנע ממצב שSaveChanges לא חבוי לי, כלומר לי יש שליטה מלאה על הunit of work מתי הוא מתחיל ומתי הוא נגמר. וגם אפשרות לפתוח טרנסאקציות (כרגע לא צריך, אבל אני לא רוצה להגביל את עצמי בעתיד)
קראתי את הפוסט שנתן לי מושג של מה לא לעשות ולמה. הוא גם ניסה לתת רעיון של מה כן לתת, אבל אני לא בטוח שהצלחתי להבין את הכיוון שלו.
מהניסיון שלכם, איך עשיתם את זה בפרוייקטים שלכם?