Example #1
0
        public void ComparisonTest2()
        {
            var one = new TableA()
            {
                Id = 1, Name = "one", Value = 11
            };
            var two = new TableA()
            {
                Id = 2, Name = "two", Value = 22
            };
            var six = new TableA()
            {
                Id = 6, Name = "six", Value = 66
            };

            var sut = new EntityComparer <TableA>(null);

            Assert.Equal(sut.Compare(one, two), -1);
            Assert.Equal(sut.Compare(two, six), -1);
            Assert.Equal(sut.Compare(two, one), 1);
            Assert.Equal(sut.Compare(six, two), 1);
            Assert.Equal(sut.Compare(one, one), 0);
            Assert.Equal(sut.Compare(two, two), 0);
            Assert.Equal(sut.Compare(six, six), 0);
        }
Example #2
0
 /// <summary>
 /// Determines whether two specified values are equal.
 /// </summary>
 /// <param name="tableA">The first value to compare.</param>
 /// <param name="tableB">The second value to compare.</param>
 internal bool Equals(DB3 tableA, DB3 tableB)
 {
     return
         ((TableA.Equals(tableA) && TableB.Equals(tableB))
          ||
          (TableA.Equals(tableB) && TableB.Equals(tableA)));
 }
Example #3
0
        public void FilterTest()
        {
            var one = new TableA()
            {
                Id = 1, Name = "one", Value = 11
            };
            var two = new TableA()
            {
                Id = 2, Name = "two", Value = 22
            };
            var six = new TableA()
            {
                Id = 6, Name = "six", Value = 66
            };

            var list = new List <TableA>()
            {
                one, two
            };

            var index = CreateIDbIndexWithFail <long, TableA>(list, (i) => i.Id);
            var sut   = index.ViewAs((a) => a.Value > 11);

            Assert.True(sut.Count() == 1);
            Assert.True(sut.Single().Id == 2);
            Assert.True(sut.Contains(two));
            Assert.False(sut.Contains(one));

            index.AddOrFail(six);

            Assert.True(sut.Count() == 2);
            Assert.True(sut.Contains(two));
            Assert.True(sut.Contains(six));
            Assert.False(sut.Contains(one));
        }
Example #4
0
        public void CanFetchNestedNavPropertiesBidirectional()
        {
            var options = BuildOptions(ContextProviderType.InMemory);
            var factory = new RepositoryFactory(options);

            var repoA = factory.Create <TableA>();
            var a     = new TableA {
                Id = 99
            };

            repoA.Add(a);
            repoA.Add(new TableA {
                Id = 2333
            });
            repoA.Add(new TableA {
                Id = 9
            });

            var repoB = factory.Create <TableB>();
            var b     = new TableB {
                Id = 10, TableAId = a.Id
            };

            repoB.Add(b);

            var repoC = factory.Create <TableC>();
            var c     = new TableC {
                Id = 10, TableBId = b.Id
            };

            repoC.Add(c);

            var repoD = factory.Create <TableD>();
            var d     = new TableD {
                Id = 500, TableCId = c.Id
            };

            repoD.Add(d);

            var queryOptions = new QueryOptions <TableA>()
                               .WithFetch(x => x.TableB)
                               .WithFetch(x => x.TableB.TableC)
                               .WithFetch(x => x.TableB.TableC.TableD)
                               .WithFilter(x => x.Id == a.Id);

            var result = repoA.Find(queryOptions);

            Assert.NotNull(result.TableB);
            Assert.NotNull(result.TableB.TableA);
            Assert.Equal(b.Id, result.TableB.Id);

            Assert.NotNull(result.TableB.TableC);
            Assert.NotNull(result.TableB.TableC.TableB);
            Assert.Equal(c.Id, result.TableB.TableC.Id);

            Assert.NotNull(result.TableB.TableC.TableD);
            Assert.NotNull(result.TableB.TableC.TableD.TableC);
            Assert.Equal(d.Id, result.TableB.TableC.TableD.Id);
        }
Example #5
0
        public void CanFetchCollectionsWithNestedNavPropertiesBidirectional()
        {
            var options = BuildOptions(ContextProviderType.InMemory);
            var factory = new RepositoryFactory(options);

            var repoA = factory.Create <TableA>();
            var a     = new TableA {
                Id = 99
            };

            repoA.Add(a);

            var repoB = factory.Create <TableB>();
            var b     = new TableB {
                Id = 10, TableAId = a.Id
            };

            repoB.Add(b);

            var repoF = factory.Create <TableF>();
            var f     = new TableF {
                Id = 23
            };

            repoF.Add(f);

            var repoE = factory.Create <TableE>();

            var eList = new List <TableE>();

            for (int i = 0; i < 10; i++)
            {
                eList.Add(new TableE {
                    Id = 1000 + i, TableAId = a.Id, TableFId = f.Id
                });
            }

            repoE.Add(eList);

            var queryOptions = new QueryOptions <TableA>()
                               .WithFetch(x => x.TableB)
                               .WithFetch(x => x.TableE)
                               .WithFetch(x => x.TableE.Select(y => y.TableF))
                               .WithFilter(x => x.Id == a.Id);

            var result = repoA.Find(queryOptions);

            Assert.NotNull(result.TableB);
            Assert.NotNull(result.TableB.TableA);
            Assert.Equal(b.Id, result.TableB.Id);

            Assert.NotEmpty(result.TableE);
            Assert.NotNull(result.TableE.First().TableF);
            Assert.NotNull(result.TableE.First().TableA);
            Assert.Equal(eList.Select(x => x.Id), result.TableE.Select(x => x.Id));
        }
Example #6
0
        public override int GetHashCode()
        {
            var h1 = TableA.GetHashCode();
            var h2 = TableB.GetHashCode();

            unchecked
            {
                return((527 + h1) * 31 + h2);
            }
        }
        public void ValidateMissingPKValue()
        {
            var a = new TableA();

            a.FirstName = "whatever";
            using (var cn = new PostulateDb().GetConnection())
            {
                cn.Open();
                var errs = a.GetValidationErrors(cn, SaveAction.Insert);
                Assert.IsTrue(errs.Any(item => item.Equals("Primary key field LastName requires a value.")));
            }
        }
        private static void InsertData()
        {
            using (var context = new Context())
            {
                // Creates the database if not exists
                context.Database.EnsureCreated();

                var tableA = new TableA
                {
                    Data = "string foobar"
                };

                var tableB = new TableB()
                {
                    Description = "Description"
                };

                context.Add(tableA);
                context.Add(tableB);

                context.SaveChanges();

                var tableAToTableB = new TableAToTableB
                {
                    Id       = 42,
                    TableAId = tableA.Id,
                    TableBId = tableB.Id
                };

                var bulkConfig = new BulkConfig
                {
                    BulkCopyTimeout     = 240,
                    SetOutputIdentity   = true,
                    PreserveInsertOrder = true,
                    BatchSize           = 1000,
                    UpdateByProperties  = new List <string>
                    {
                        nameof(TableAToTableB.TableAId),
                        nameof(TableAToTableB.TableBId),
                    },
                    CalculateStats = true
                };

                context.BulkUpdate(new List <TableAToTableB> {
                    tableAToTableB
                }, bulkConfig);
            }
        }
Example #9
0
        public void CreateNewKeyColumnsInNonEmptyTable()
        {
            var sm = new SchemaMerge <PostulateDb>();

            using (IDbConnection cn = sm.GetConnection())
            {
                cn.Open();

                // create tables A, B, and C
                sm.Execute(cn);

                var record = new TableA()
                {
                    FirstName = "Adam", LastName = "O'Neil"
                };
                new PostulateDb().Save(record);
            }
        }
Example #10
0
        /// <summary>
        /// Returns the hash code for this instance.
        /// </summary>
        public override int GetHashCode()
        {
            var h1 = TableA.GetHashCode();
            var h2 = TableB.GetHashCode();

            // sort
            if (h1 < h2)
            {
                unchecked
                {
                    return((527 + h1) * 31 + h2);
                }
            }
            else
            {
                unchecked
                {
                    return((527 + h2) * 31 + h1);
                }
            }
        }
Example #11
0
        public void OrderTest()
        {
            var one = new TableA()
            {
                Id = 1, Name = "one", Value = 11
            };
            var two = new TableA()
            {
                Id = 2, Name = "two", Value = 22
            };
            var six = new TableA()
            {
                Id = 6, Name = "six", Value = 66
            };

            var list = new List <TableA>()
            {
                one, two
            };

            var index = CreateIDbIndexWithFail <long, TableA>(list, (i) => i.Id);
            var sut   = index.ViewAs((a, b) => a.Id.CompareTo(b.Id) * -1);

            Assert.True(sut.Count() == 2);
            Assert.True(sut.ToArray()[0].Id == 2);
            Assert.True(sut.ToArray()[1].Id == 1);
            Assert.True(sut.Contains(one));
            Assert.True(sut.Contains(two));
            Assert.False(sut.Contains(six));

            index.AddOrFail(six);

            Assert.True(sut.Count() == 3);
            Assert.True(sut.ToArray()[0].Id == 6);
            Assert.True(sut.ToArray()[1].Id == 2);
            Assert.True(sut.ToArray()[2].Id == 1);
            Assert.True(sut.Contains(one));
            Assert.True(sut.Contains(two));
            Assert.True(sut.Contains(six));
        }
        public void TrackTableAChanges()
        {
            var db = new PostulateDb();

            using (var cn = db.GetConnection())
            {
                cn.Open();

                if (!db.Syntax.TableExists(cn, typeof(TableA)))
                {
                    CreateTable ct = new CreateTable(db.Syntax, db.Syntax.GetTableInfoFromType(typeof(TableA)));
                    foreach (var cmd in ct.SqlCommands(cn))
                    {
                        cn.Execute(cmd);
                    }
                }
            }

            TableA a = new TableA()
            {
                FirstName = "Julio", LastName = "Arragato"
            };

            db.DeleteOneWhere <TableA>("[FirstName]=@FirstName AND [LastName]=@LastName", a);
            db.DeleteOneWhere <TableA>("[FirstName]=@FirstName AND [LastName]=@LastName", new { FirstName = "Geoffrey", LastName = "Arragato" });

            db.Save(a);

            a.FirstName = "Geoffrey";
            db.Save(a);

            var history = db.QueryChangeHistory <TableA>(a.Id);
            var changes = history.First().Properties.ToDictionary(item => item.PropertyName);

            Assert.IsTrue(changes["FirstName"].OldValue.Equals("Julio") && changes["FirstName"].NewValue.Equals("Geoffrey"));
        }
Example #13
0
        public override string ToString()
        {
            StringBuilder sb = new StringBuilder();

            sb.AppendFormat(JoinClause.ToString()).AppendLine();

            if (TableA is gsSubQueryFromTerm)
            {
                var subQry = TableA as gsSubQueryFromTerm;
                subQry.SubQuery.QryName = $"subQry{gsSelectQuery.GetNextID()}";

                sb.AppendLine();
                sb.AppendLine(subQry.SubQuery.ToString());
            }

            if (TableB is gsSubQueryFromTerm)
            {
                var subQry = TableB as gsSubQueryFromTerm;
                subQry.SubQuery.QryName = $"subQry{gsSelectQuery.GetNextID()}";

                sb.AppendLine();
                sb.AppendLine(subQry.SubQuery.ToString());
            }

            sb.AppendLine($"{QryName}.FromClause.Join(JoinType.{JoinType.ToString()}, {TableA.ToString()}, {TableB.ToString()}, {JoinClause.WhereClauseName});");
            return(sb.ToString());
        }
Example #14
0
 /// <summary>
 /// Returns the string representation of this instance.
 /// </summary>
 public override string ToString()
 {
     return(String.Format("{0}:{1}", TableA.ToString(), TableB.ToString()));
 }