public void LazyFieldHasCheckIfModifiedConstraintTest()
        {
            var counter = new QueryCounter();

            using (var session = Domain.OpenSession()) {
                using (counter.Attach(session))
                    using (var transaction = session.OpenTransaction()) {
                        foreach (var chapter in session.Query.All <Chapter>())
                        {
                            chapter.Title = chapter.Title + " modified";
                        }
                        transaction.Complete();
                    }
                Assert.That(counter.Count, Is.EqualTo(2));
                counter.Reset();
            }

            using (var session = Domain.OpenSession()) {
                int updatedItems = 0;
                using (counter.Attach(session))
                    using (var transaction = session.OpenTransaction()) {
                        foreach (var chapter in session.Query.All <Chapter>())
                        {
                            chapter.Description = chapter.Description + " modified";
                            updatedItems++;
                        }
                        transaction.Complete();
                    }
                Assert.That(counter.Count, Is.EqualTo(5)); // query + fetches + update
                counter.Reset();
            }
        }
        public void LazyFieldHasCheckAlwaysConstraintTest()
        {
            var counter = new QueryCounter();

            using (var session = Domain.OpenSession()) {
                using (counter.Attach(session))
                    using (var transaction = session.OpenTransaction()) {
                        var goncharov = session.Query.Single <Author>(goncharovKey);
                        goncharov.FirstName = goncharov.FirstName + "modified"; // should prefetch lazy load field
                        transaction.Complete();
                    }
                Assert.That(counter.Count, Is.EqualTo(3));
                counter.Reset();
            }
        }
        public void LazyFieldHasNoConstraintTest()
        {
            var counter = new QueryCounter();

            using (var session = Domain.OpenSession()) {
                using (counter.Attach(session))
                    using (var transaction = session.OpenTransaction()) {
                        var oblomov = session.Query.Single <Book>(oblomovKey);
                        oblomov.Title = "Oblomov by Goncharov";
                        transaction.Complete();
                    }
                Assert.That(counter.Count, Is.EqualTo(2));
                counter.Reset();
            }
        }
예제 #4
0
        private static void Load_VERSION_3_3()
        {
            BindFragDataLocationIndexed = GetAddress <BindFragDataLocationIndexed>("glBindFragDataLocationIndexed");
            GetFragDataIndex            = GetAddress <GetFragDataIndex>("glGetFragDataIndex");
            _GenSampler             = GetAddress <GenSampler>("glGenSamplers");
            _GenSamplers            = GetAddress <GenSamplers>("glGenSamplers");
            DeleteSamplers          = GetAddress <DeleteSamplers>("glDeleteSamplers");
            IsSampler               = GetAddress <IsSampler>("glIsSampler");
            BindSampler             = GetAddress <BindSampler>("glBindSampler");
            _SamplerParameteri      = GetAddress <SamplerParameteri>("glSamplerParameteri");
            SamplerParameteriv      = GetAddress <SamplerParameteriv>("glSamplerParameteriv");
            SamplerParameterf       = GetAddress <SamplerParameterf>("glSamplerParameterf");
            SamplerParameterfv      = GetAddress <SamplerParameterfv>("glSamplerParameterfv");
            SamplerParameterIiv     = GetAddress <SamplerParameterIiv>("glSamplerParameterIiv");
            SamplerParameterIuiv    = GetAddress <SamplerParameterIuiv>("glSamplerParameterIuiv");
            _GetSamplerParameteri   = GetAddress <GetSamplerParameteri>("glGetSamplerParameteriv");
            GetSamplerParameteriv   = GetAddress <GetSamplerParameteriv>("glGetSamplerParameteriv");
            GetSamplerParameterIi   = GetAddress <GetSamplerParameterIi>("glGetSamplerParameterIiv");
            GetSamplerParameterIiv  = GetAddress <GetSamplerParameterIiv>("glGetSamplerParameterIiv");
            GetSamplerParameterf    = GetAddress <GetSamplerParameterf>("glGetSamplerParameterfv");
            GetSamplerParameterfv   = GetAddress <GetSamplerParameterfv>("glGetSamplerParameterfv");
            GetSamplerParameterIui  = GetAddress <GetSamplerParameterIui>("glGetSamplerParameterIuiv");
            GetSamplerParameterIuiv = GetAddress <GetSamplerParameterIuiv>("glGetSamplerParameterIuiv");
            QueryCounter            = GetAddress <QueryCounter>("glQueryCounter");
            GetQueryObjecti64       = GetAddress <GetQueryObjecti64>("glGetQueryObjecti64v");
            GetQueryObjecti64v      = GetAddress <GetQueryObjecti64v>("glGetQueryObjecti64v");
            GetQueryObjectui64      = GetAddress <GetQueryObjectui64>("glGetQueryObjectui64v");
            GetQueryObjectui64v     = GetAddress <GetQueryObjectui64v>("glGetQueryObjectui64v");
            VertexAttribDivisor     = GetAddress <VertexAttribDivisor>("glVertexAttribDivisor");
            VertexAttribP1ui        = GetAddress <VertexAttribP1ui>("glVertexAttribP1ui");
            VertexAttribP1uiv       = GetAddress <VertexAttribP1uiv>("glVertexAttribP1uiv");
            VertexAttribP2ui        = GetAddress <VertexAttribP2ui>("glVertexAttribP2ui");
            VertexAttribP2uiv       = GetAddress <VertexAttribP2uiv>("glVertexAttribP2uiv");
            VertexAttribP3ui        = GetAddress <VertexAttribP3ui>("glVertexAttribP3ui");
            VertexAttribP3uiv       = GetAddress <VertexAttribP3uiv>("glVertexAttribP3uiv");
            VertexAttribP4ui        = GetAddress <VertexAttribP4ui>("glVertexAttribP4ui");
            VertexAttribP4uiv       = GetAddress <VertexAttribP4uiv>("glVertexAttribP4uiv");

            VERSION_3_3 = VERSION_3_2 && BindFragDataLocationIndexed != null && GetFragDataIndex != null && _GenSamplers != null &&
                          DeleteSamplers != null && IsSampler != null && BindSampler != null && _SamplerParameteri != null &&
                          SamplerParameteriv != null && SamplerParameterf != null && SamplerParameterfv != null && SamplerParameterIiv != null &&
                          SamplerParameterIuiv != null && GetSamplerParameteriv != null && GetSamplerParameterIiv != null &&
                          GetSamplerParameterfv != null && GetSamplerParameterIuiv != null && QueryCounter != null &&
                          GetQueryObjecti64v != null && GetQueryObjectui64v != null && VertexAttribDivisor != null && VertexAttribP1uiv != null &&
                          VertexAttribP2uiv != null && VertexAttribP3uiv != null && VertexAttribP4uiv != null;
        }
예제 #5
0
        /// <summary>
        /// Called first to initialize the context
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
        private void ForumPage_Init([NotNull] object sender, [NotNull] EventArgs e)
        {
            this.Get <IRaiseEvent>().Raise(new ForumPageInitEvent());

            if (this._noDataBase)
            {
                return;
            }

#if DEBUG
            QueryCounter.Reset();
#endif

            // set the current translation page...
            this.Get <LocalizationProvider>().TranslationPage = this._transPage;

            // fire preload event...
            this.Get <IRaiseEvent>().Raise(new ForumPagePreLoadEvent());
        }
        public void LazyFieldHasCheckIfModifiedConstraintTest()
        {
            var counter = new QueryCounter();

            using (var session = Domain.OpenSession()) {
                using (counter.Attach(session))
                    using (var transaction = session.OpenTransaction()) {
                        foreach (var chapter in session.Query.All <Chapter>())
                        {
                            chapter.Title = chapter.Title + " modified";
                        }
                        transaction.Complete();
                    }

                Assert.That(counter.OverallCount, Is.EqualTo(4));
                Assert.That(counter.SelectCount, Is.EqualTo(1)); // select items only, no fetch
                Assert.That(counter.UpdateCount, Is.EqualTo(3));

                counter.Reset();
            }

            using (var session = Domain.OpenSession()) {
                var updatedItems = 0;
                using (counter.Attach(session))
                    using (var transaction = session.OpenTransaction()) {
                        foreach (var chapter in session.Query.All <Chapter>())
                        {
                            chapter.Description = chapter.Description + " modified";
                            updatedItems++;
                        }
                        transaction.Complete();
                    }

                Assert.That(counter.OverallCount, Is.EqualTo(7));
                Assert.That(counter.SelectCount, Is.EqualTo(4)); // query + fetches
                Assert.That(counter.UpdateCount, Is.EqualTo(3)); // updates

                counter.Reset();
            }
        }
예제 #7
0
        /// <summary>
        /// The execute.
        /// </summary>
        /// <param name="execFunc">
        /// The exec func.
        /// </param>
        /// <param name="cmd">
        /// The cmd.
        /// </param>
        /// <param name="dbTransaction">
        /// The db transaction.
        /// </param>
        /// <typeparam name="T">
        /// </typeparam>
        /// <returns>
        /// The <see cref="T"/>.
        /// </returns>
        public virtual T Execute <T>(Func <IDbCommand, T> execFunc, IDbCommand cmd = null, IDbTransaction dbTransaction = null)
        {
            var command = cmd ?? this.GetCommand(string.Empty, false);

            using (var qc = new QueryCounter(command.CommandText))
            {
                T result = default(T);

                if (dbTransaction == null)
                {
                    if (command.Connection != null && command.Connection.State == ConnectionState.Open)
                    {
                        result = execFunc(command);
                    }
                    else
                    {
                        using (var connection = this.CreateConnectionOpen())
                        {
                            // get an open connection
                            command.Connection = connection;

                            result = execFunc(command);

                            connection.Close();
                        }
                    }
                }
                else
                {
                    command.Populate(dbTransaction);

                    result = execFunc(command);
                }

#if DEBUG
                qc.CurrentSql = command.CommandText;
#endif
                return(result);
            }
        }