public static void Insert(DbLink dbLink, cashflow cashflow) { string query = @"insert into cashflow(cf_id, val, dat, valid_dat) values(@cf_id, @val, @dat, @valid_dat)"; dbLink.GetConnection().Execute(query, cashflow); }
public static cashflow FindId(DbLink dbLink, int cf_id, DateTime dateTime, DateTime validDatetime) { cashflow cf = new cashflow(); cf.cf_id = cf_id; cf.dat = dateTime; cf.valid_dat = validDatetime; string query = string.Format(@"select * from cashflow t where t.cf_id = @cf_id and t.dat = @dat and t.valid_dat <= @valid_dat"); var result = dbLink.GetConnection().QueryFirstOrDefault <cashflow>(query, cf); return(result); }
private void Save(Dictionary <PortfolioPosition, CashFlow> dictionary) { foreach (var x in dictionary) { var transaction = _dbLink.GetConnection().BeginTransaction(IsolationLevel.ReadCommitted); try { var finIdent = x.Key.Ident; var finType = x.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 fcs fcs ffd = new fcs() { ds_id = dataSource.ds_id, fi_id = finInstrument.fi_id, ct_id = int.Parse(_mapping.GetAI(x.Value.Attribute)) }; if (FCS.Find(_dbLink, ffd.fi_id, ffd.ds_id, ffd.ct_id) == null) { FCS.Insert(_dbLink, ffd); } ffd = FCS.Find(_dbLink, ffd.fi_id, ffd.ds_id, ffd.ct_id); #endregion #region Денежный поток foreach (var z in x.Value.Values) { cashflow cf = new cashflow() { cf_id = ffd.cf_id, dat = z.Key, val = z.Value, valid_dat = (DateTime)_providerParams[REPORTDATE] }; if (Cashflow.FindId(_dbLink, cf.cf_id, cf.dat, cf.valid_dat) == null) { //первое значение, следовательно 01.01.1900 год cf.valid_dat = new DateTime(1900, 01, 01); Cashflow.Insert(_dbLink, cf); } else { Cashflow.Insert(_dbLink, cf); } } #endregion transaction.Commit(); } catch (Exception ex) { transaction.Rollback(); } } }