Beispiel #1
0
        /// <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;
        }
Beispiel #2
0
 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;
 }
Beispiel #3
0
        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;
        }
Beispiel #4
0
 public InnerAdoSession(IDbConnection conn)
 {
     this._internalAdoSession = new InternalAdoSession(conn);
     this._adoSession         = this._internalAdoSession;
     this.InitEvents(this._internalAdoSession);
 }
Beispiel #5
0
        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();
        }