Пример #1
0
        public void SelectJoinTablesWithTripleType()
        {
            Configuration.SetDialect(new TestDialect());
            SetModeling();
            var b = new SelectBuilder();

            b.From <DeliveryNote>();
            b.Join <DeliveryNote, DeliveryNoteDetail>((i, id) => i.Id == id.DeliveryNoteId);
            b.Join <DeliveryNote, DeliveryNoteDetail, User>(
                (dn, dnd, u) => dn.CreatedBy == u.Id && dnd.CreatedBy == u.Id);

            var gen  = b.GetSqlText();
            var spec = "SELECT * FROM [WH].[DeliveryNote] AS [T0] INNER JOIN [WH].[DeliveryNoteDetail] AS [T1] ON ([T0].[Id] = [T1].[DeliveryNote_Id]) INNER JOIN [LoB].[SecurityProfile] AS [T2] ON (([T0].[CreatedBy] = [T2].[Id]) AND ([T1].[CreatedBy] = [T2].[Id]))";

            Assert.Equal(spec, gen);
        }
Пример #2
0
        public void SelectSelfTableJoin()
        {
            Configuration.SetDialect(new TestDialect());
            SetModeling();
            var b = new SelectBuilder();

            b.From <User>("T11");
            b.Join <User, User>("T22", (c1, c2) => c1.CreatedBy == c2.Id);

            var gen  = b.GetSqlText();
            var spec = "SELECT * FROM [LoB].[SecurityProfile] AS [T11] INNER JOIN [LoB].[SecurityProfile] AS [T22] ON ([T11].[CreatedBy_Id] = [T22].[Id])";

            Assert.Equal(spec, gen);
        }
Пример #3
0
        public void SelectJoinTwoTablesWithAliases()
        {
            Configuration.SetDialect(new TestDialect());
            SetModeling();
            var b = new SelectBuilder();

            b.From <DeliveryNote>("T11");
            b.Join <DeliveryNote, DeliveryNoteDetail>("T22", (i, id) => i.Id == id.DeliveryNoteId || i.TotalAmount >= id.UnitPrice);

            var gen  = b.GetSqlText();
            var spec = "SELECT * FROM [WH].[DeliveryNote] AS [T11] INNER JOIN [WH].[DeliveryNoteDetail] AS [T22] ON (([T11].[Id] = [T22].[DeliveryNote_Id]) OR ([T11].[TotalAmount] >= [T22].[UnitPrice]))";

            Assert.Equal(spec, gen);
        }
Пример #4
0
        public void SelectLeftJoinTwoTables()
        {
            Configuration.SetDialect(new TestDialect());
            SetModeling();
            var b = new SelectBuilder();

            b.From <DeliveryNote>();
            b.Join <DeliveryNote, DeliveryNoteDetail>(JoinType.Left, (i, id) => i.Id == id.DeliveryNoteId);

            var gen  = b.GetSqlText();
            var spec = "SELECT * FROM [WH].[DeliveryNote] AS [T0] LEFT JOIN [WH].[DeliveryNoteDetail] AS [T1] ON ([T0].[Id] = [T1].[DeliveryNote_Id])";

            Assert.Equal(spec, gen);
        }
Пример #5
0
        public void SelectColumnsJoinsAndWhere()
        {
            Configuration.SetDialect(new TestDialect());
            SetModeling();
            var b = new SelectBuilder();

            b.From <DeliveryNote>();
            b.Join <DeliveryNote, DeliveryNoteDetail>((i, id) => i.Id == id.DeliveryNoteId);
            b.Join <DeliveryNote, Supplier>((i, c) => i.SupplierId == c.Id);
            b.Select <DeliveryNote, Supplier>((i, c) => i.Number, (i, c) => c.Name, (i, c) => i.Date, (i, c) => i.TotalAmount);
            b.Select <DeliveryNoteDetail>((id) => id.Size);
            b.Where <Supplier>(c => c.IsDeleted);
            b.Where <DeliveryNote, DeliveryNoteDetail>((i, id) => i.Year == "B" && id.IsDeleted == false);
            b.Where <DeliveryNote, DeliveryNoteDetail>(WhereOperator.Or, (i, id) => i.Year == "Z");

            var gen  = b.GetSqlText();
            var spec = "SELECT [T0].[Number], [T2].[Name], [T0].[Date], [T0].[TotalAmount], [T1].[Size] FROM [WH].[DeliveryNote] AS [T0] INNER JOIN [WH].[DeliveryNoteDetail] AS [T1] ON ([T0].[Id] = [T1].[DeliveryNote_Id]) INNER JOIN [WH].[Supplier] AS [T2] ON ([T0].[SupplierId] = [T2].[Id]) WHERE ([T2].[IsDeleted] = @SqlParam0) AND (([T0].[Year] = @SqlParam1) AND ([T1].[IsDeleted] = @SqlParam2)) OR ([T0].[Year] = @SqlParam3)";

            Assert.Equal(spec, gen);
            Assert.Equal(b.Parameters["SqlParam0"], true);
            Assert.Equal(b.Parameters["SqlParam1"], "B");
            Assert.Equal(b.Parameters["SqlParam2"], false);
            Assert.Equal(b.Parameters["SqlParam3"], "Z");
        }
Пример #6
0
        public void SelectProjection()
        {
            Configuration.SetDialect(new TestDialect());
            SetModeling();
            var b = new SelectBuilder();

            b.From <DeliveryNote>();
            b.Join <DeliveryNote, Supplier>((dn, s) => dn.SupplierId == s.Id);
            b.Select <DeliveryNote, Supplier>((dn, s) => new DeliveryNoteDto
            {
                Number       = dn.Number,
                TotalAmount  = dn.TotalAmount,
                Date         = dn.Date,
                SupplierName = s.Name
            });

            var gen  = b.GetSqlText();
            var spec = "SELECT [T0].[Number] AS Number, [T0].[TotalAmount] AS TotalAmount, [T0].[Date] AS Date, [T1].[Name] AS SupplierName FROM [WH].[DeliveryNote] AS [T0] INNER JOIN [WH].[Supplier] AS [T1] ON ([T0].[SupplierId] = [T1].[Id])";

            Assert.Equal(spec, gen);
        }