/// <summary> /// 使用外部事务。 /// </summary> /// <param name="dbTransaction"></param> public void UseExternalTransaction(IDbTransaction dbTransaction) { if (dbTransaction == null) { this._adoSession = this._internalAdoSession; this._externalAdoSession = null; return; } if (this._adoSession == this._internalAdoSession && this._internalAdoSession.IsInTransaction) { throw new NotSupportedException("当前回话已经开启事务,已开启的事务未提交或回滚前无法使用外部事务。"); } if (this._externalAdoSession != null) { throw new NotSupportedException("当前回话已经使用了一个外部事务,无法再次使用另一个外部事务。"); } ExternalAdoSession externalAdoSession = new ExternalAdoSession(dbTransaction); this.InitEvents(externalAdoSession); this._externalAdoSession = externalAdoSession; this._adoSession = externalAdoSession; }
void InitEvents(IAdoSession adoSession) { adoSession.OnReaderExecuting += this.OnReaderExecuting; adoSession.OnReaderExecuted += this.OnReaderExecuted; adoSession.OnNonQueryExecuting += this.OnNonQueryExecuting; adoSession.OnNonQueryExecuted += this.OnNonQueryExecuted; adoSession.OnScalarExecuting += this.OnScalarExecuting; adoSession.OnScalarExecuted += this.OnScalarExecuted; }
public InternalDataReader(IAdoSession adoSession, IDataReader reader, IDbCommand cmd, List <OutputParameter> outputParameters) : base(reader) { PublicHelper.CheckNull(adoSession); PublicHelper.CheckNull(cmd); this._adoSession = adoSession; this._cmd = cmd; this._outputParameters = outputParameters; }
public InnerAdoSession(IDbConnection conn) { this._internalAdoSession = new InternalAdoSession(conn); this._adoSession = this._internalAdoSession; this.InitEvents(this._internalAdoSession); }
protected static void UtworzeniePK() { IAdoSession Sesja = Login.CreateSession(); /* * Pobranie ID bie¿¹cego okresu obrachunkowego z konfigracji Opt!my */ CDNKONFIGLib.IKonfiguracja knf = (CDNKONFIGLib.IKonfiguracja)Sesja.Login.CreateObject("CDNKonfig.Konfiguracja"); string val = knf.get_Value("BiezOkresObr"); int OObID = (val.Length == 0) ? 0 : Convert.ToInt32(val); /* stworzenie nowego PK */ CDNKH.Dekrety dekret = (CDNKH.Dekrety)Sesja.CreateObject("CDN.Dekrety", null); CDNKH.IDekret idekret = (CDNKH.IDekret)dekret.AddNew(null); /* pobranie obiektu okresu obrachunkowego (je¿eli konieczne) – tutaj ju¿ mamy okres do jakiego dodajemy PK * ICollection okresy = (CDNBase.ICollection)(Sesja.CreateObject("CDN.Okresy", null)); * CDNDave.IOkres iokres = (CDNDave.IOkres)okresy["OOb_OObID=" + OObID]; */ /* * pobranie dziennika * pobieranie dzinnika po samym ID nie jest dobre: * dziennik jest przypisany do okresu obrachunkowego! * lepiej po symbolu oraz w³aœnie ID okresu do jakiego bêdzie dodane PK */ ICollection dziennik = (CDNBase.ICollection)(Sesja.CreateObject("CDN.Dzienniki", null)); //CDNDave.IDziennik idzienniki = (CDNDave.IDziennik)dziennik["Dzi_DziID = 26"]; CDNDave.IDziennik idzienniki = (CDNDave.IDziennik)dziennik["Dzi_Symbol = 'BANK' AND Dzi_OObID=" + OObID]; /* stworzenie kontrahenta */ ICollection Kontrahenci = (CDNBase.ICollection)(Sesja.CreateObject("CDN.Kontrahenci", null)); CDNHeal.IKontrahent kontrahent = (CDNHeal.IKontrahent)Kontrahenci["Knt_Kod='ADM'"]; /* * podstawienie OObID nie jest konieczne - dziennik wie, do jakiego okresu nale¿y */ //idekret.OObId = iokres.ID; idekret.DziID = idzienniki.ID; idekret.DataDok = new DateTime(2010, 06, 9); /* * podstawienie dataOpe i DataWys nie jest konieczne, je¿eli maj¹ byæ takie same jak DataDok */ //idekret.DataOpe = new DateTime(2010, 06, 9); //idekret.DataWys = new DateTime(2010, 06, 9); idekret.Bufor = 1; idekret.Podmiot = (CDNHeal.IPodmiot)kontrahent; idekret.Dokument = "A1234"; // Dodawania pozycji do dokumentu ICollection elementy = idekret.Elementy; CDNKH.IDekretElement ielement = (CDNKH.IDekretElement)elementy.AddNew(null); ICollection kategorie = (ICollection)Sesja.CreateObject("CDN.Kategorie", null); CDNHeal.IKategoria ikategoria = (CDNHeal.IKategoria)kategorie["Kat_KodSzczegol = 'INNE'"]; ielement.Kategoria = (CDNHeal.Kategoria)ikategoria; /* * Te daty przejmowane s¹ z PK */ // ielement.DataOpe = new DateTime(2010, 06, 9); // ielement.DataWys = new DateTime(2010, 06, 9); ICollection konta = (ICollection)Sesja.CreateObject("CDN.Konta", null); /* * Konta ksiegowe te¿ s¹ przypisane do okresu obrachunkowego! * Wybieranie konta po samym numerze to za ma³o: trzeba jeszcze wybraæ z jakiego okresu ma byæ konto! */ CDNKH.IKonto kontoWn = (CDNKH.IKonto)konta["Acc_Numer = '100' AND Acc_OObID=" + OObID]; CDNKH.IKonto kontoMa = (CDNKH.IKonto)konta["Acc_Numer = '131' AND Acc_OObID=" + OObID]; ielement.KontoWn = (CDNKH.Konto)kontoWn; ielement.KontoMa = (CDNKH.Konto)kontoMa; ielement.Kwota = 100; // Koniec dodawania pozycji do dokumentu Sesja.Save(); }