public static IDbDriver CreateDbDriver(string dbType) { IDbDriver driver = null; switch (dbType.ToLower()) { case "sqlserver": driver = new SqlDbDriver(); break; case "mysql": driver = new MySqlDriver(); break; case "oracle": driver = new OracleDriver(); break; case "sqlite": driver = new SQLiteDriver(); break; case "access": driver = new OleDbDriver(); break; } return(driver); }
public static T[] Query <T>(this MySqlDriver driver, FormattableString query) { driver.Open(); var reader = driver.Query(query); var converter = ConverterCache <T> .GetConverter(reader); var array = ThreadStaticArrayPool <T> .GetArray(); var count = 0; while (reader.Read()) { if (count == array.Length) { Array.Resize(ref array, checked ((int)(count * 1.5))); } var v = converter(reader); array[count++] = v; } if (array == ThreadStaticArrayPool <T> .GetArray()) { var result = new T[count]; Array.Copy(array, result, count); Array.Clear(array, 0, count); // null clear return(result); } else { Array.Resize(ref array, count); return(array); } }
public TestFluentGenericQueryBuilder() { var mySqlDriver = new MySqlDriver(); var mapper = new Mapper(); fluentSelectBuilder = FluentBaseBuilder <FakeClass, FolkeTuple> .Select(mySqlDriver, mapper); queryBuilder = fluentSelectBuilder.QueryBuilder; }
public TestManyToManyHelpers() { var driver = new MySqlDriver(); var newMapper = new Mapper(); connection = FolkeConnection.Create(driver, newMapper, TestHelpers.ConnectionString); connection.CreateOrUpdateTable <ParentClass>(); connection.CreateOrUpdateTable <ChildClass>(); connection.CreateOrUpdateTable <LinkClass>(); }
public static IEnumerable <T> QueryEnumerable <T>(this MySqlDriver driver, FormattableString query) { driver.Open(); var reader = driver.Query(query); var converter = ConverterCache <T> .GetConverter(reader); while (reader.Read()) { var v = converter(reader); yield return(v); } }
public TestQueryBuilderExtensions() { var driver = new MySqlDriver(); var mapper = new Mapper(); connection = FolkeConnection.Create(driver, mapper, TestHelpers.ConnectionString); transaction = connection.BeginTransaction(); connection.CreateOrUpdateTable <TestPoco>(); connection.CreateOrUpdateTable <TestManyPoco>(); testPoco = new TestPoco { Name = "FakeName" }; connection.Save(testPoco); }
static void Main(string[] args) { var option = new MySqlSharp.MySqlConnectionOptions { Server = "", Database = "", UserId = "", Password = "", }; var driver = new MySqlDriver(option); driver.Open(); var reader = driver.Query <long>($"select 1543535353 as aaa, 1234213, 21313"); //var nextReader = reader.CreateNextReader(); //nextReader.rea ////var prepare = driver.Prepare("select version() as v, 199 as num union select version(), 399"); //var prepare = driver.Prepare("select 1"); //var reader = driver.Execute(prepare.StatementId); //while (reader.Read()) //{ // //var a = reader.GetString(0); // var b = reader.GetInt32(0); //} /* * var reader = driver.Query("select version() as v, 199 as num union select version(), 399"); * * while (reader.MoveNext()) * { * // set. * * var s = reader.GetString(0); * var i = reader.GetInt32(1); * } */ }
public static T[] QueryOne <T>(this MySqlDriver driver, FormattableString query) { driver.Open(); var reader = driver.Query(query); // reader.ColumnDefinitions // reader.ColumnDefinitions // var pool = System.Buffers.ArrayPool<T>.Shared.Rent(1024); // reader.ColumnDefinitions // System.Buffers.ArrayPool<T>.Shared.Return(pool, true); // create final buffer. // (query.Format), // return Cache<T>.convert(reader); // Array.Clear(0, // reader.ColumnDefinitions return(null); }
public IntegrationTestFluent() { var driver = new MySqlDriver(); var mapper = new Mapper(); connection = FolkeConnection.Create(driver, mapper, TestHelpers.ConnectionString); connection.CreateTable <TestPoco>(drop: true); connection.CreateTable <TestManyPoco>(drop: true); connection.CreateTable <TestMultiPoco>(drop: true); connection.CreateTable <TestCollection>(drop: true); connection.CreateTable <TestCollectionMember>(drop: true); var poco = new TestPoco { Boolean = true, Name = "FakePoco" }; connection.Save(poco); var many = new TestManyPoco { Poco = poco, Toto = "FakeMany" }; connection.Save(many); }
public static string ToCreateTableScript(DbDriverType dbType, TableSchema tableSchema) { string result = ""; if (dbType == DbDriverType.Mysql) { result = new MySqlDriver(null, "", "").ToCreateTableScript(tableSchema); } else if (dbType == DbDriverType.Oracle) { result = new OracleDriver(null, "", "").ToCreateTableScript(tableSchema); } else if (dbType == DbDriverType.Sqlite) { result = new SqliteDriver(null, "", "").ToCreateTableScript(tableSchema); } else { result = new SqlServer2000Driver(null, "", "").ToCreateTableScript(tableSchema); } return(result); }
private static void Main(string[] args) { var sqlBuilder = new MySqlStatementBuilder(); var driver = new MySqlDriver(""); IChangeTracker changeTracker = new ChangeTracking.ChangeTracker(); var orm = new MyOrm(driver, sqlBuilder, changeTracker); var qry = orm.GetQuery <Person>(); var filtered = qry .Where(i => i.Age > 18 || i.Age < 30) .Where(i => i.FirstName == "Peter") .Where(i => i.FirstName != "Otto" && i.Age <= 100); //var filtered = qry.OrderBy(i => i.Age); var lst = filtered.ToList(); //foreach (var person1 in lst) //{ // person1.Age++; //} //orm.SubmitChanges(); //var person = new Person //{ // Age = 18, // FirstName = "Manfred", // LastName = "Fredmann" //}; // orm.Insert(person); Console.ReadKey(); }
/// <summary>SELECT * from COLLATIONS</summary> public static Collations Collations(MySqlDriver driver) { var query = driver.Query("SELECT * from COLLATIONS"); throw new NotImplementedException("TODO:Mapping"); }
public void RunDeleteStatement_IsNotDelete_ThrowsException() { IDatabaseDriver driver = new MySqlDriver(""); Should.Throw <Exception>(() => driver.RunDeleteStatement("")); }
public void Insert_Update_Delete_Select() { const string validConnectionString = "server=127.0.0.1;uid=root;pwd=root;database=test"; var options = new DbContextOptionsBuilder <MysqlContext>() .UseMySQL(validConnectionString) .Options; var context = new MysqlContext(options); context.RemoveRange(context.Persons); context.SaveChanges(); var driver = new MySqlDriver(validConnectionString); var sqlBuilder = new MySqlStatementBuilder(); var changeTracker = new ChangeTracking.ChangeTracker(); var orm = new MyOrm(driver, sqlBuilder, changeTracker); orm.ChangeTracker.Count.ShouldBe(0); var person1 = new Person { FirstName = "Mike", LastName = "Rosoft", Age = 1337 }; var person2 = new Person { FirstName = "Tux", LastName = "L. Oves", Age = 80085 }; var person3 = new Person { FirstName = "Mac", LastName = "N. Tosh", Age = 1234 }; //Insert person1.Id.ShouldBe(0); orm.Insert(person1); person1.Id.ShouldBe(-1); person2.Id.ShouldBe(0); orm.Insert(person2); person2.Id.ShouldBe(-2); person3.Id.ShouldBe(0); orm.Insert(person3); person3.Id.ShouldBe(-3); orm.ChangeTracker.Count.ShouldBe(3); orm.ChangeTracker.InsertedObjects.Count().ShouldBe(3); GetFreshContext(options).Persons.ShouldBeEmpty(); orm.SubmitChanges(); person1.Id.ShouldBeGreaterThan(0); person2.Id.ShouldBe(person1.Id + 1); person3.Id.ShouldBe(person2.Id + 1); GetFreshContext(options).Persons.Count().ShouldBe(3); orm.ChangeTracker.InsertedObjects.ShouldBeEmpty(); orm.ChangeTracker.UnmodifiedObjects.Count().ShouldBe(3); //Update var rand = new Random(); var newAge = rand.Next(1, int.MaxValue); person1.Age = newAge; GetFreshContext(options).Persons.Single(x => x.Id == person1.Id).Age.ShouldBe(1337); orm.SubmitChanges(); orm.ChangeTracker.UnmodifiedObjects.Count().ShouldBe(3); GetFreshContext(options).Persons.Single(x => x.Id == person1.Id).Age.ShouldBe(newAge); GetFreshContext(options).Persons.Count().ShouldBe(3); //Delete GetFreshContext(options).Persons.Count().ShouldBe(3); orm.ChangeTracker.UnmodifiedObjects.Count().ShouldBe(3); orm.Delete(person3); orm.ChangeTracker.Entries.Count().ShouldBe(3); orm.ChangeTracker.DeletedObjects.Count().ShouldBe(1); orm.ChangeTracker.GetEntry(person3).State.ShouldBe(ChangeTrackerEntry.States.Deleted); GetFreshContext(options).Persons.Count().ShouldBe(3); orm.SubmitChanges(); orm.ChangeTracker.Entries.Count().ShouldBe(3); orm.ChangeTracker.DeletedObjects.Count().ShouldBe(1); orm.ChangeTracker.GetEntry(person3).State.ShouldBe(ChangeTrackerEntry.States.Deleted); GetFreshContext(options).Persons.Count().ShouldBe(2); //GetObjectsFromDb var anotherPerson1 = orm.GetQuery <Person>() .Where(p => p.FirstName == "Mike" && p.LastName == "Rosoft") .Where(p => p.Age == newAge).ToList().First(); anotherPerson1.ShouldNotBeNull(); anotherPerson1.Id.ShouldBe(person1.Id); person1.ShouldBe(anotherPerson1); var person1AndPerson2 = orm.GetQuery <Person>() .Where(p => p.FirstName == "Mike" || p.FirstName == "Tux" && p.LastName == "Rosoft" || p.LastName == "L. Oves") .Where(p => p.Age == newAge || p.Age == 80085).ToList(); person1AndPerson2[0].ShouldNotBeNull(); person1AndPerson2[1].ShouldNotBeNull(); person1AndPerson2[0].ShouldBe(anotherPerson1); person1AndPerson2[0].ShouldBe(person1); person1AndPerson2[1].ShouldBe(person2); }
public void Select_Multiple() { const string validConnectionString = "server=127.0.0.1;uid=root;pwd=root;database=test"; var options = new DbContextOptionsBuilder <MysqlContext>() .UseMySQL(validConnectionString) .Options; var context = new MysqlContext(options); context.RemoveRange(context.Persons); context.SaveChanges(); var driver = new MySqlDriver(validConnectionString); var sqlBuilder = new MySqlStatementBuilder(); var changeTracker = new ChangeTracking.ChangeTracker(); var orm = new MyOrm(driver, sqlBuilder, changeTracker); orm.ChangeTracker.Entries.ShouldBeEmpty(); var person1 = new Person { FirstName = "Mike", LastName = "Rosoft", Age = 1337 }; var person2 = new Person { FirstName = "Tux", LastName = "L. Oves", Age = 80085 }; var person3 = new Person { FirstName = "Mac", LastName = "N. Tosh", Age = 1234 }; var inserterContext = GetFreshContext(options); inserterContext.Persons.Add(person1); inserterContext.Persons.Add(person2); inserterContext.Persons.Add(person3); inserterContext.SaveChanges(); GetFreshContext(options).Persons.Count().ShouldBe(3); orm.ChangeTracker.Entries.ShouldBeEmpty(); var people = orm.GetQuery <Person>().ToList(); orm.ChangeTracker.Entries.Count().ShouldBe(3); orm.ChangeTracker.GetEntry(people[0]).ShouldNotBeNull(); orm.ChangeTracker.GetEntry(people[1]).ShouldNotBeNull(); orm.ChangeTracker.GetEntry(people[2]).ShouldNotBeNull(); people[0].Id.ShouldBe(person1.Id); people[1].Id.ShouldBe(person2.Id); people[2].Id.ShouldBe(person3.Id); people[0].ShouldNotBe(person1); people[1].ShouldNotBe(person2); people[2].ShouldNotBe(person3); var evenMorePeople = orm.GetQuery <Person>().ToList(); people[0].ShouldBe(evenMorePeople[0]); people[1].ShouldBe(evenMorePeople[1]); people[2].ShouldBe(evenMorePeople[2]); }