Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
0
        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>();
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 7
0
        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);
             * }
             */
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 10
0
        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);
        }
Exemplo n.º 11
0
        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();
        }
Exemplo n.º 12
0
        /// <summary>SELECT * from COLLATIONS</summary>
        public static Collations Collations(MySqlDriver driver)
        {
            var query = driver.Query("SELECT * from COLLATIONS");

            throw new NotImplementedException("TODO:Mapping");
        }
Exemplo n.º 13
0
        public void RunDeleteStatement_IsNotDelete_ThrowsException()
        {
            IDatabaseDriver driver = new MySqlDriver("");

            Should.Throw <Exception>(() => driver.RunDeleteStatement(""));
        }
Exemplo n.º 14
0
        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);
        }
Exemplo n.º 15
0
        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]);
        }