내가 함께 일하고 있어요 내 DB에서 3 개 테이블이 :Linq에
Theme [Theme_ID]
ThemeWorkplace [Theme_ID, Workplace_ID, ThemeWorkplace_ID]
UserTheme [User_ID, Theme_ID, UserTheme_ID, UserTheme_AccessType]
내가 모든
UserTheme_AccessType
을 변경해야
현재 직장에서 ThemeWorkplace.Workplace_ID = 2
이고 현재 사용자가 User_ID = 1
인 UserTheme.Theme_ID
입니다. 그런 사용자 및 주제에 대한 테마가 UserTheme
에없는 경우 - 그것을 만들어야합니다.
var themeList = (from t in m_Entities.Theme
where (from tw in m_Entities.ThemeWorkplace
where tw.Workplace.Workplace_ID == 2
select tw.Theme.Theme_ID).Contains(t.Theme_ID)
select t)
.ToList();
foreach (Theme theme in themeList)
{
var oldUserTheme = GetByUserTheme(user/*user is given*/, theme);
if (oldUserTheme == null)
{
/* create new User Theme with params, that I need*/
this.Add(newUserTheme, true);
}
else
{
/* here - changing found row */
oldUserTheme.UserTheme_AccessType = 2;
}
}
는이 코드가 데이터베이스를 여러 번 액세스하는 것을 이해합니다. 나는 제거하는 방법을 찾으려면 : 모든 foreach
반복에서
var oldUserTheme = GetByUserTheme(user/*user is given*/, theme);
합니다. 누군가 제발 도와 주실 수 있나요? GetByUserTheme()의
추가 코드 : 나는 완전히 질문과 구조를 이해하고있어 경우
private UserTheme GetByUserTheme(User user, Theme theme)
{
return m_Entities.UserTheme.FirstOrDefault(ut => ut.User.User_ID == user.User_ID && ut.Theme.Theme_ID == theme.Theme_ID);
}
'GetByUserTheme'의 작동 방식에 대한 세부 정보를 게시하는 것이 유용 할 수 있습니다. –
고맙습니다. GetByUserTheme 문을 추가했습니다. –