public void TestRemoveFisdDate() { var tempConnection = DataBaseLink.Fabricate.CreateConnection(_connection, ConnectionType.Npgsql); DataBaseLink.DbLink dbLink = new DbLink(tempConnection); //создать финансовый инструмент fin_instrument fin_instrument = new fin_instrument("roman", 13, "bushuev"); if (FinInstrument.FindId(dbLink, fin_instrument.ident) == null) { FinInstrument.Insert(dbLink, fin_instrument); } var result = FinInstrument.FindId(dbLink, fin_instrument.ident); //fisd_id ffd ffd = new ffd() { ds_id = 17, fi_id = result.fi_id, fif_id = 11, }; if (FFD.Find(dbLink, result.fi_id, ffd.ds_id, ffd.fif_id) == null) { FFD.Insert(dbLink, ffd); } var ffdResult = FFD.Find(dbLink, result.fi_id, ffd.ds_id, ffd.fif_id); //создать fisd_date fisd_date fisdDate = new fisd_date() { fisd_id = ffdResult.fisd_id, dat_from = new DateTime(2018, 03, 25), val = new DateTime(2018, 03, 25) }; if (FisdDate.FindId(dbLink, fisdDate.fisd_id, fisdDate.dat_from) == null) { FisdDate.Insert(dbLink, fisdDate); var one = FisdDate.FindId(dbLink, fisdDate.fisd_id, fisdDate.dat_from); FisdDate.Remove(dbLink, fisdDate.fisd_id, one.dat_from); } else { var one = FisdDate.FindId(dbLink, fisdDate.fisd_id, fisdDate.dat_from); FisdDate.Remove(dbLink, fisdDate.fisd_id, one.dat_from); } }
//insert public static void Insert(DbLink dbLink, fisd_date fisd_date) { //при первой вставке дату указываем = 01.01.1900 if (FindId(dbLink, fisd_date.fisd_id, fisd_date.dat_from) == null) { fisd_date.dat_from = new DateTime(1900, 01, 01); } else { var result = FindId(dbLink, fisd_date.fisd_id, fisd_date.dat_from); if (fisd_date.val == result.val) { return; } } string query = @"insert into fisd_date(val, dat_from, fisd_id) values(@val, @dat_from, @fisd_id)"; dbLink.GetConnection().Execute(query, fisd_date); }
private void Save(Dictionary <KeyValuePair <PortfolioPosition, Enum>, ScalarDate> storage) { foreach (var x in storage) { var transaction = _dbLink.GetConnection().BeginTransaction(IsolationLevel.ReadCommitted); try { // найдем тип финансового инструмента var finIdent = x.Key.Key.Ident; var finType = x.Key.Key.FinType; string finTypeIdent = _mapping.GetAI(finType); #region финансовый инструмент fin_instrument finInstrument = new fin_instrument() { ident = finIdent, title = finIdent, ft_id = int.Parse(finTypeIdent) }; if (FinInstrument.FindId(_dbLink, finInstrument.ident) == null) { FinInstrument.Insert(_dbLink, finInstrument); } finInstrument = FinInstrument.FindId(_dbLink, finInstrument.ident); #endregion #region Data_source data_source dataSource = new data_source() { ident = _providerParams[SCALAR].ToString(), }; dataSource = DataSource.FindId(_dbLink, dataSource.ident); #endregion #region fisd_id ffd ffd = new ffd() { ds_id = dataSource.ds_id, fi_id = finInstrument.fi_id, fif_id = int.Parse(_mapping.GetAI(x.Key.Value)) }; if (FFD.Find(_dbLink, ffd.fi_id, ffd.ds_id, ffd.fif_id) == null) { FFD.Insert(_dbLink, ffd); } ffd = FFD.Find(_dbLink, ffd.fi_id, ffd.ds_id, ffd.fif_id); #endregion #region date fisd_date fisdDate = new fisd_date() { fisd_id = ffd.fisd_id, dat_from = x.Value.Dictionary.First().Key, val = x.Value.Dictionary.First().Value, }; FisdDate.Insert(_dbLink, fisdDate); #endregion transaction.Commit(); } catch (Exception ex) { transaction.Rollback(); } } }