/// <summary> /// общее сохранение /// </summary> public void Save() { if (!m_RepoList.Any()) { return; } using (var dc = new githubdbEntities()) { //почистим таблички для начала var queryRepo = dc.T_REPO.ToArray(); var queryAuthors = dc.T_AUTHORS.ToArray(); if (queryRepo.Length > 0 || queryAuthors.Length > 0) { dc.T_AUTHORS.RemoveRange(queryAuthors); dc.T_REPO.RemoveRange(queryRepo); dc.SaveChanges(); } SaveAuthors(); var repoListToSave = new List <T_REPO>(); foreach (var mRepository in m_RepoList) { // занесем репозиторий repoListToSave.Add(new T_REPO { AUTHOR_ID = dc.T_AUTHORS.Where(w => w.LOGIN == mRepository.Login).Select(s => s.ID_AUTHOR).First(), DATE_UPDATE = mRepository.DateLastUpdate, FORKS_COUNT = mRepository.ForkCount, LANGUAGE = mRepository.Language, REPO_DESC = mRepository.Description, REPO_NAME = mRepository.Name, REPO_REF = mRepository.Reference, STARS_COUNT = mRepository.StarsCount, }); } dc.T_REPO.AddRange(repoListToSave); dc.SaveChanges(); } }
/// <summary> /// сохраним авторов в отдельную табличку /// </summary> private void SaveAuthors() { using (var dc = new githubdbEntities()) { var authorListToSave = new List <T_AUTHORS>(); foreach (var mRepository in m_RepoList) { // сначала занесем в таблицу автора var queryAddAuthor = dc.T_AUTHORS.FirstOrDefault(w => w.LOGIN == mRepository.Login); if (queryAddAuthor == null) { authorListToSave.Add(new T_AUTHORS { AVATAR = mRepository.Ava, LOGIN = mRepository.Login, }); } } dc.T_AUTHORS.AddRange(authorListToSave); dc.SaveChanges(); } }
public void Load() { using (var dc = new githubdbEntities()) { var query = dc.T_REPO .Select(s => s).ToArray(); foreach (var mRepository in query) { RepoList.Add(new M_Repository { Login = mRepository.T_AUTHORS.LOGIN, Ava = mRepository.T_AUTHORS.AVATAR, DateLastUpdate = mRepository.DATE_UPDATE, ForkCount = mRepository.FORKS_COUNT, Language = mRepository.LANGUAGE, Description = mRepository.REPO_DESC, Name = mRepository.REPO_NAME, Reference = mRepository.REPO_REF, StarsCount = mRepository.STARS_COUNT }); } } }