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); }
/// <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))); }
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)); }
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); }
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)); }
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); } }
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); } }
/// <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); } } }
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")); }
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()); }
/// <summary> /// Returns the string representation of this instance. /// </summary> public override string ToString() { return(String.Format("{0}:{1}", TableA.ToString(), TableB.ToString())); }