public WalletError SetPaymentWalletsBySystem(ProtectedOperationContext secCtx, PaymentSystem syst, List <UserPaymentSystem> actualPaySys, string userLogin, string walletPwrd) { if (!UserSessionStorage.Instance.PermitUserOperation(secCtx, false, false)) { return(WalletError.InsufficientRights); } try { using (var ctx = DatabaseContext.Instance.Make()) { var user = ctx.PLATFORM_USER.FirstOrDefault(u => u.Login == userLogin); if (user == null) { return(WalletError.AuthenticationError); } // уничтожить старые записи того же типа var existRecs = ctx.USER_PAYMENT_SYSTEM.Where(r => r.UserId == user.ID && r.SystemPayment == (int)syst).ToList(); foreach (var rec in existRecs) { ctx.USER_PAYMENT_SYSTEM.Remove(rec); } ctx.SaveChanges(); // добавить новые записи foreach (var paySyst in actualPaySys) { paySyst.UserId = user.ID; paySyst.SystemPayment = syst; ctx.USER_PAYMENT_SYSTEM.Add(LinqToEntity.UndecorateUserPaymentSystem(paySyst)); } ctx.SaveChanges(); return(WalletError.OK); } } catch (DbUpdateException ex) { if (ex.InnerException.InnerException is SqlException) { Logger.Error("SetPaymentWalletsBySystem() error: возможно, запись с таким RootId и PurseId уже есть в таблице USER_PAYMENT_SYSTEM", ex); return(WalletError.ServerSqlError); } Logger.Error("SetPaymentWalletsBySystem() error", ex); return(WalletError.ServerError); } catch (Exception ex) { Logger.Error("SetPaymentWalletsBySystem() error", ex); return(WalletError.ServerError); } }