Esempio n. 1
0
        private void GenerateQueryContexts()
        {
            //if ((int) this.queryLanguage == OldQuery.LoadRelations)
            //	LoadRelatedTables();
            //else if (this.queryLanguage == Language.NDOql)
            if (this.queryLanguage == QueryLanguage.Sql)
            {
                var selectList = new SqlColumnListGenerator(pm.NDOMapping.FindClass(typeof(T))).SelectList;
                var sql        = Regex.Replace(this.queryExpression, @"SELECT\s+\*", "SELECT " + selectList);
                this.expressionTree = new RawIdentifierExpression(sql, 0, 0);
            }
            else
            {
                NDOql.OqlParser parser     = new NDOql.OqlParser();
                var             parsedTree = parser.Parse(this.queryExpression);
                if (parsedTree != null)
                {
                    // The root expression tree might get exchanged.
                    // To make this possible we make it the child of a dummy expression.
                    this.expressionTree = new OqlExpression(0, 0);
                    this.expressionTree.Add(parsedTree);
                    ((IManageExpression)parsedTree).SetParent(this.expressionTree);
                }
            }

            CreateQueryContextsForTypes();
        }
Esempio n. 2
0
        public void TestValueTypeRelation()
        {
            NDOQuery <Sozialversicherungsnummer> q = new NDOQuery <Sozialversicherungsnummer>(pm, "arbeiter.position.X > 2 AND arbeiter.position.Y < 5");
            var fields = new SqlColumnListGenerator(pm.NDOMapping.FindClass(typeof(Sozialversicherungsnummer))).Result(false, false, true);

            Assert.AreEqual(String.Format($"SELECT {fields} FROM [Sozialversicherungsnummer] INNER JOIN [Mitarbeiter] ON [Mitarbeiter].[ID] = [Sozialversicherungsnummer].[IDSozial] WHERE [Mitarbeiter].[Position_X] > 2 AND [Mitarbeiter].[Position_Y] < 5", this.mitarbeiterFields), q.GeneratedQuery);
        }
Esempio n. 3
0
        public void Test1To1Bidirectional()
        {
            NDOQuery <Mitarbeiter> q = new NDOQuery <Mitarbeiter>(pm, "sn.nummer = 4711");

            Assert.AreEqual(String.Format("SELECT {0} FROM [Mitarbeiter] INNER JOIN [Sozialversicherungsnummer] ON [Sozialversicherungsnummer].[ID] = [Mitarbeiter].[IDSozial] WHERE [Sozialversicherungsnummer].[Nummer] = 4711", this.mitarbeiterJoinFields), q.GeneratedQuery);
            NDOQuery <Sozialversicherungsnummer> qs = new NDOQuery <Sozialversicherungsnummer>(pm, "arbeiter.vorname = 'Mirko'");
            var fields = new SqlColumnListGenerator(pm.NDOMapping.FindClass(typeof(Sozialversicherungsnummer))).Result(false, false, true);

            Assert.AreEqual($"SELECT {fields} FROM [Sozialversicherungsnummer] INNER JOIN [Mitarbeiter] ON [Mitarbeiter].[ID] = [Sozialversicherungsnummer].[IDSozial] WHERE [Mitarbeiter].[Vorname] = 'Mirko'", qs.GeneratedQuery);
        }
Esempio n. 4
0
        public void Test1To1BiWithTable()
        {
            NDOQuery <Zertifikat> qz = new NDOQuery <Zertifikat>(pm, "sgn.signature = 'abc'");
            var fields = new SqlColumnListGenerator(pm.NDOMapping.FindClass(typeof(Zertifikat))).Result(false, false, true);

            Assert.AreEqual($"SELECT {fields} FROM [Zertifikat] INNER JOIN [relSignaturZertifikat] ON [Zertifikat].[ID] = [relSignaturZertifikat].[IDZertifikat] INNER JOIN [Signatur] ON [Signatur].[ID] = [relSignaturZertifikat].[IDSignatur] WHERE [Signatur].[Signature] = 'abc'", qz.GeneratedQuery);
            NDOQuery <Signatur> qs = new NDOQuery <Signatur>(pm, "owner.schlüssel = -4");
            string s = qs.GeneratedQuery;

            fields = new SqlColumnListGenerator(pm.NDOMapping.FindClass(typeof(Signatur))).Result(false, false, true);
            Assert.AreEqual($"SELECT {fields} FROM [Signatur] INNER JOIN [relSignaturZertifikat] ON [Signatur].[ID] = [relSignaturZertifikat].[IDSignatur] INNER JOIN [Zertifikat] ON [Zertifikat].[ID] = [relSignaturZertifikat].[IDZertifikat] WHERE [Zertifikat].[Schlüssel] = -4", qs.GeneratedQuery);
        }
Esempio n. 5
0
        public void QueryWithDateTimeMinValueParameterSearchesForNull()
        {
            // The query will fetch for DataContainerDerived objects, too.
            // Hence we test with "StartsWith", because the query contains additional text, which doesn't matter here.
            var q = new NDOQuery <DataContainer>(pm, "dateTimeVar = {0}");

            q.Parameters.Add(DateTime.MinValue);
            var fields = new SqlColumnListGenerator(pm.NDOMapping.FindClass(typeof(DataContainer))).SelectList;
            var sql    = $"SELECT {fields} FROM [DataContainer] WHERE [DataContainer].[DateTimeVar] IS NULL";

            Assert.That(q.GeneratedQuery.StartsWith(sql));

            q = new NDOQuery <DataContainer>(pm, "dateTimeVar <> {0}");
            q.Parameters.Add(DateTime.MinValue);
            sql = $"SELECT {fields} FROM [DataContainer] WHERE [DataContainer].[DateTimeVar] IS NOT NULL";
            Assert.That(q.GeneratedQuery.StartsWith(sql));
        }
Esempio n. 6
0
        public void CheckIfMultiKeysWork()
        {
            NDOQuery <OrderDetail> q = new NDOQuery <OrderDetail>(pm, "oid = {0}");
            var od = pm.FindObject(typeof(OrderDetail), new object[] { 1, 2 });

            q.Parameters.Add(od.NDOObjectId);
            var fields = new SqlColumnListGenerator(pm.NDOMapping.FindClass(typeof(OrderDetail))).SelectList;

            Assert.AreEqual($"SELECT {fields} FROM [OrderDetail] WHERE [OrderDetail].[IDProduct] = {{0}} AND [OrderDetail].[IDOrder] = {{1}}", q.GeneratedQuery);
            bool thrown = false;

            try
            {
                q = new NDOQuery <OrderDetail>(pm, "oid = -4");
                string s = q.GeneratedQuery;
            }
            catch (NDOException)
            {
                thrown = true;
            }
            Assert.AreEqual(true, thrown);
        }