Beispiel #1
0
        public void Manual_Delete_Operation_Deletes_Records()
        {
            var schema = new DataSchemaBuilder()
                         .AddSqlEntity <Flat_Entity>()
                         .Build();
            var sqlDataModel = schema.Sql.SqlEntities.OfType <SqlDataModel <Flat_Entity> >().First();

            using (var dataProvider = DataProvider.CreateTestProvider())
            {
                dataProvider.ExecuteNonQuery(Sqlite3QueryExpression.Raw($@"
					CREATE TABLE {sqlDataModel.StorageModel.DefaultTableName}
					(
						[Id] INTEGER PRIMARY KEY AUTOINCREMENT,
						[Value] INTEGER
					)"                    ));

                dataProvider.ExecuteNonQuery(QueryExpression.Insert(
                                                 QueryExpression.Table(sqlDataModel.StorageModel.DefaultTableName),
                                                 new[] { QueryExpression.Column("Value") },
                                                 new[] { QueryExpression.Value(5) },
                                                 new[] { QueryExpression.Value(6) }
                                                 ));

                var dataSet = new SqlDataSet <Flat_Entity>(sqlDataModel, dataProvider);
                dataSet.Delete().AndWhere(q => q.Value == 5).Execute();

                using (var queryResult = dataProvider.ExecuteReader(QueryExpression.Select(new[] { QueryExpression.Column(nameof(Flat_Entity.Value)) }, from: QueryExpression.Table(sqlDataModel.StorageModel.DefaultTableName))))
                {
                    Assert.IsTrue(queryResult.HasRows);
                    Assert.IsTrue(queryResult.Read());
                    Assert.AreEqual(6, queryResult.GetInt32(0));
                }
            }
        }
Beispiel #2
0
        public void Delete_Returns_Number_Of_Deleted_Records()
        {
            var schema = new DataSchemaBuilder()
                         .AddSqlEntity <Flat_Entity>()
                         .Build();
            var sqlDataModel = schema.Sql.SqlEntities.OfType <SqlDataModel <Flat_Entity> >().First();

            using (var dataProvider = DataProvider.CreateTestProvider())
            {
                dataProvider.ExecuteNonQuery(Sqlite3QueryExpression.Raw($@"
					CREATE TABLE {sqlDataModel.StorageModel.DefaultTableName}
					(
						[Id] INTEGER PRIMARY KEY AUTOINCREMENT,
						[Value] INTEGER
					)"                    ));

                dataProvider.ExecuteNonQuery(QueryExpression.Insert(
                                                 QueryExpression.Table(sqlDataModel.StorageModel.DefaultTableName),
                                                 new[] { QueryExpression.Column("Value") },
                                                 new[] { QueryExpression.Value(5) },
                                                 new[] { QueryExpression.Value(6) }
                                                 ));

                var dataSet = new SqlDataSet <Flat_Entity>(sqlDataModel, dataProvider);
                Assert.AreEqual(2, dataSet.Delete().Execute());
            }
        }
Beispiel #3
0
        public void Insert_Custom_Embedded_ColumnName()
        {
            var schema = new DataSchemaBuilder()
                         .AddSqlEntity <Complex_Entity>(cfg => cfg.Field(q => q.Flat.Value, cfg => cfg.ColumnName("Custom")).AutoModel())
                         .Build();
            var sqlDataModel = schema.Sql.SqlEntities.OfType <SqlDataModel <Complex_Entity> >().First();

            using (var dataProvider = DataProvider.CreateTestProvider())
            {
                dataProvider.ExecuteNonQuery(Sqlite3QueryExpression.Raw($@"
					CREATE TABLE {sqlDataModel.StorageModel.DefaultTableName}
					(
						[Value] INTEGER,
						[Custom] INTEGER,
						[Flat_Id] INTEGER
					)"                    ));

                var dataSet = new SqlDataSet <Complex_Entity>(sqlDataModel, dataProvider);

                var entity = new Complex_Entity {
                    Value = 5, Flat = new Flat_Entity {
                        Value = 6
                    }
                };
                dataSet.Insert(entity).Execute();

                using (var result = dataProvider.ExecuteReader(QueryExpression.Select(new[] { QueryExpression.All() }, from: QueryExpression.Table(sqlDataModel.StorageModel.DefaultTableName))))
                {
                    Assert.IsTrue(result.HasRows);
                    Assert.IsTrue(result.Read());
                    Assert.AreEqual(entity.Value, result.GetInt32(0));
                    Assert.AreEqual(entity.Flat.Value, result.GetInt32(1));
                }
            }
        }
Beispiel #4
0
        public void Delete_Can_Delete_From_Non_Default_Table()
        {
            var tableName = "Delete_Can_Delete_From_Non_Default_Table";
            var schema    = new DataSchemaBuilder()
                            .AddSqlEntity <Flat_Entity>()
                            .Build();
            var sqlDataModel = schema.Sql.SqlEntities.OfType <SqlDataModel <Flat_Entity> >().First();

            using (var dataProvider = DataProvider.CreateTestProvider())
            {
                dataProvider.ExecuteNonQuery(Sqlite3QueryExpression.Raw($@"
					CREATE TABLE {tableName}
					(
						[Id] INTEGER PRIMARY KEY AUTOINCREMENT,
						[Value] INTEGER
					)"                    ));

                dataProvider.ExecuteNonQuery(QueryExpression.Insert(
                                                 QueryExpression.Table(tableName),
                                                 new[] { QueryExpression.Column("Value") },
                                                 new[] { QueryExpression.Value(5) },
                                                 new[] { QueryExpression.Value(6) }
                                                 ));

                var dataSet = new SqlDataSet <Flat_Entity>(sqlDataModel, dataProvider);
                //  no need to test the results of this operation, if it fails it'll throw an exception
                dataSet.Delete().Table(tableName).Execute();
            }
        }
Beispiel #5
0
        public void Can_Update_With_Value()
        {
            var schema = new DataSchemaBuilder()
                         .AddSqlEntity <Flat_Entity>()
                         .Build();
            var sqlDataModel = schema.Sql.SqlEntities.OfType <SqlDataModel <Flat_Entity> >().First();

            using (var dataProvider = DataProvider.CreateTestProvider())
            {
                dataProvider.ExecuteNonQuery(Sqlite3QueryExpression.Raw($@"
					CREATE TABLE {sqlDataModel.StorageModel.DefaultTableName}
					(
						[Id] INTEGER PRIMARY KEY AUTOINCREMENT,
						[Value] TEXT
					)"                    ));

                dataProvider.ExecuteNonQuery(QueryExpression.Insert(
                                                 QueryExpression.Table(sqlDataModel.StorageModel.DefaultTableName),
                                                 new[] { QueryExpression.Column("Value") },
                                                 new[] { QueryExpression.Value("Hello") }
                                                 ));

                var dataSet = new SqlDataSet <Flat_Entity>(sqlDataModel, dataProvider);
                dataSet.Update().Set(q => q.Value, "World").Execute();

                using (var result = dataProvider.ExecuteReader(QueryExpression.Select(new[] { QueryExpression.All() }, from: QueryExpression.Table(sqlDataModel.StorageModel.DefaultTableName))))
                {
                    Assert.IsTrue(result.HasRows);
                    Assert.IsTrue(result.Read());
                    Assert.AreEqual("World", result.GetString(1));
                }
            }
        }
Beispiel #6
0
        public void Select_View_Returns_View()
        {
            var schema = new DataSchemaBuilder()
                         .AddSqlEntity <Flat_Entity>()
                         .Build();
            var sqlDataModel = schema.Sql.SqlEntities.OfType <SqlDataModel <Flat_Entity> >().First();

            using (var dataProvider = DataProvider.CreateTestProvider())
            {
                dataProvider.ExecuteNonQuery(Sqlite3QueryExpression.Raw($@"
					CREATE TABLE {sqlDataModel.StorageModel.DefaultTableName}
					(
						[Id] INTEGER PRIMARY KEY AUTOINCREMENT,
						[Value] INTEGER
					)"                    ));

                dataProvider.ExecuteNonQuery(QueryExpression.Insert(
                                                 QueryExpression.Table(sqlDataModel.StorageModel.DefaultTableName),
                                                 new[] { QueryExpression.Column("Value") },
                                                 new[] { QueryExpression.Value(1) },
                                                 new[] { QueryExpression.Value(2) }
                                                 ));

                var dataSet  = new SqlDataSet <Flat_Entity>(sqlDataModel, dataProvider);
                var valueSet = dataSet.Select <Flat_Entity_Value_View>().ToList();

                Assert.IsTrue(
                    valueSet.Select(q => q.Value).SequenceEqual(new[] { 1, 2 })
                    );
            }
        }
        public void Can_Select_Count()
        {
            var schema = new DataSchemaBuilder()
                         .AddSqlEntity <Flat_Entity>()
                         .Build();
            var sqlDataModel = schema.Sql.SqlEntities.OfType <SqlDataModel <Flat_Entity> >().First();

            using (var dataProvider = DataProvider.CreateTestProvider())
            {
                dataProvider.ExecuteNonQuery(Sqlite3QueryExpression.Raw($@"
					CREATE TABLE {sqlDataModel.StorageModel.DefaultTableName}
					(
						[Id] INTEGER PRIMARY KEY AUTOINCREMENT,
						[Value] INTEGER
					)"                    ));

                dataProvider.ExecuteNonQuery(QueryExpression.Insert(
                                                 QueryExpression.Table(sqlDataModel.StorageModel.DefaultTableName),
                                                 new[] { QueryExpression.Column("Value") },
                                                 new[] { QueryExpression.Value(1) },
                                                 new[] { QueryExpression.Value(2) }
                                                 ));

                var dataSet = new SqlDataSet <Flat_Entity>(sqlDataModel, dataProvider);
                var id      = dataSet.Select(q => dataSet.ServerFunctions.Count()).ToSingle();
                Assert.AreEqual(2, id);
            }
        }
        public void Can_Select_IsIn_With_SubQuery()
        {
            var schema = new DataSchemaBuilder()
                         .AddSqlEntity <Flat_Entity>()
                         .Build();
            var sqlDataModel = schema.Sql.SqlEntities.OfType <SqlDataModel <Flat_Entity> >().First();

            using (var dataProvider = DataProvider.CreateTestProvider())
            {
                dataProvider.ExecuteNonQuery(Sqlite3QueryExpression.Raw($@"
					CREATE TABLE {sqlDataModel.StorageModel.DefaultTableName}
					(
						[Id] INTEGER PRIMARY KEY AUTOINCREMENT,
						[Value] INTEGER
					)"                    ));

                dataProvider.ExecuteNonQuery(QueryExpression.Insert(
                                                 QueryExpression.Table(sqlDataModel.StorageModel.DefaultTableName),
                                                 new[] { QueryExpression.Column("Value") },
                                                 new[] { QueryExpression.Value(1) },
                                                 new[] { QueryExpression.Value(2) },
                                                 new[] { QueryExpression.Value(3) }
                                                 ));

                var dataSet  = new SqlDataSet <Flat_Entity>(sqlDataModel, dataProvider);
                var subQuery = dataSet.Select(q => q.Id).AndWhere(q => q.Id == 1 || q.Id == 3);
                var valueSet = dataSet.Select(q => dataSet.ServerFunctions.IsIn(q.Id, subQuery)).ToList();
                Assert.IsTrue(new[] { true, false, true }.SequenceEqual(valueSet));
            }
        }
        public void Can_Select_HasFlag_With_Expression()
        {
            var schema = new DataSchemaBuilder()
                         .AddSqlEntity <Enum_Entity>()
                         .Build();
            var sqlDataModel = schema.Sql.SqlEntities.OfType <SqlDataModel <Enum_Entity> >().First();

            using (var dataProvider = DataProvider.CreateTestProvider())
            {
                dataProvider.ExecuteNonQuery(Sqlite3QueryExpression.Raw($@"
					CREATE TABLE {sqlDataModel.StorageModel.DefaultTableName}
					(
						[Id] INTEGER PRIMARY KEY AUTOINCREMENT,
						[Value] INTEGER,
						[Requirement] INTEGER
					)"                    ));

                dataProvider.ExecuteNonQuery(QueryExpression.Insert(
                                                 QueryExpression.Table(sqlDataModel.StorageModel.DefaultTableName),
                                                 new[] { QueryExpression.Column("Value"), QueryExpression.Column("Requirement") },
                                                 new[] { QueryExpression.Value(0x1), QueryExpression.Value(0x1) },
                                                 new[] { QueryExpression.Value(0x2), QueryExpression.Value(0x1) },
                                                 new[] { QueryExpression.Value(0x1 | 0x4), QueryExpression.Value(0x1) }
                                                 ));

                var dataSet  = new SqlDataSet <Enum_Entity>(sqlDataModel, dataProvider);
                var valueSet = dataSet.Select(q => dataSet.ServerFunctions.HasFlag(q.Value, q.Requirement)).ToList();
                Assert.IsTrue(new[] { true, false, true }.SequenceEqual(valueSet));
            }
        }
        public void Can_Extend_Server_Method_Support()
        {
            var schema = new DataSchemaBuilder()
                         .AddSqlMethodCallConverter(new ServerFunctionConverter())
                         .AddSqlEntity <Flat_Entity>()
                         .Build();
            var sqlDataModel = schema.Sql.SqlEntities.OfType <SqlDataModel <Flat_Entity> >().First();

            using (var dataProvider = DataProvider.CreateTestProvider())
            {
                dataProvider.ExecuteNonQuery(Sqlite3QueryExpression.Raw($@"
					CREATE TABLE {sqlDataModel.StorageModel.DefaultTableName}
					(
						[Id] INTEGER PRIMARY KEY AUTOINCREMENT,
						[Value] INTEGER
					)"                    ));

                dataProvider.ExecuteNonQuery(QueryExpression.Insert(
                                                 QueryExpression.Table(sqlDataModel.StorageModel.DefaultTableName),
                                                 new[] { QueryExpression.Column("Value") },
                                                 new[] { QueryExpression.Value(1) },
                                                 new[] { QueryExpression.Value(2) }
                                                 ));

                var dataSet   = new SqlDataSet <Flat_Entity>(sqlDataModel, dataProvider);
                var resultSet = dataSet.Select().AndWhere(q => dataSet.ServerFunctions.ValueIsGreaterThanOne(q)).ToList();
                Assert.AreEqual(1, resultSet.Count);
                Assert.AreEqual(2, resultSet[0].Value);
            }
        }
        public void Can_Select_IsLike()
        {
            var schema = new DataSchemaBuilder()
                         .AddSqlEntity <Flat_Entity <string> >(q => q.DefaultTableName = "TestTable")
                         .Build();
            var sqlDataModel = schema.Sql.SqlEntities.OfType <SqlDataModel <Flat_Entity <string> > >().First();

            using (var dataProvider = DataProvider.CreateTestProvider())
            {
                dataProvider.ExecuteNonQuery(Sqlite3QueryExpression.Raw($@"
					CREATE TABLE {sqlDataModel.StorageModel.DefaultTableName}
					(
						[Id] INTEGER PRIMARY KEY AUTOINCREMENT,
						[Value] TEXT
					)"                    ));

                dataProvider.ExecuteNonQuery(QueryExpression.Insert(
                                                 QueryExpression.Table(sqlDataModel.StorageModel.DefaultTableName),
                                                 new[] { QueryExpression.Column("Value") },
                                                 new[] { QueryExpression.Value("This is like") },
                                                 new[] { QueryExpression.Value("Not so much") }
                                                 ));

                var dataSet  = new SqlDataSet <Flat_Entity <string> >(sqlDataModel, dataProvider);
                var valueSet = dataSet.Select(q => dataSet.ServerFunctions.IsLike(q.Value, "%is%")).ToList();
                Assert.IsTrue(new[] { true, false }.SequenceEqual(valueSet));
            }
        }
Beispiel #12
0
        public void Execute_Returns_Affected_Row_Count()
        {
            var schema = new DataSchemaBuilder()
                         .AddSqlEntity <Flat_Entity>()
                         .Build();
            var sqlDataModel = schema.Sql.SqlEntities.OfType <SqlDataModel <Flat_Entity> >().First();

            using (var dataProvider = DataProvider.CreateTestProvider())
            {
                dataProvider.ExecuteNonQuery(Sqlite3QueryExpression.Raw($@"
					CREATE TABLE {sqlDataModel.StorageModel.DefaultTableName}
					(
						[Id] INTEGER PRIMARY KEY AUTOINCREMENT,
						[Value] TEXT
					)"                    ));

                dataProvider.ExecuteNonQuery(QueryExpression.Insert(
                                                 QueryExpression.Table(sqlDataModel.StorageModel.DefaultTableName),
                                                 new[] { QueryExpression.Column("Value") },
                                                 new[] { QueryExpression.Value("Hello") },
                                                 new[] { QueryExpression.Value("Hello") }
                                                 ));

                var dataSet = new SqlDataSet <Flat_Entity>(sqlDataModel, dataProvider);
                var result  = dataSet.Update().Set(q => q.Value, "World").Execute();

                Assert.AreEqual(2, result);
            }
        }
Beispiel #13
0
        public void Does_Not_Select_Computed_Field_On_Entity()
        {
            var schema = new DataSchemaBuilder()
                         .AddSqlEntity <Entity_With_Computed_Field>()
                         .Build();
            var sqlDataModel = schema.Sql.SqlEntities.OfType <SqlDataModel <Entity_With_Computed_Field> >().First();

            using (var dataProvider = DataProvider.CreateTestProvider())
            {
                //  leave "C" off the schema, if we try to query for "C" it'll throw an exception and fail the test
                dataProvider.ExecuteNonQuery(Sqlite3QueryExpression.Raw($@"
					CREATE TABLE {sqlDataModel.StorageModel.DefaultTableName}
					(
						[Id] INTEGER PRIMARY KEY AUTOINCREMENT,
						[A] INTEGER,
						[B] INTEGER
					)"                    ));

                dataProvider.ExecuteNonQuery(QueryExpression.Insert(
                                                 QueryExpression.Table(sqlDataModel.StorageModel.DefaultTableName),
                                                 new[] { QueryExpression.Column("A"), QueryExpression.Column("B") },
                                                 new[] { QueryExpression.Value(1), QueryExpression.Value(1) }
                                                 ));

                var dataSet = new SqlDataSet <Entity_With_Computed_Field>(sqlDataModel, dataProvider);
                var result  = dataSet.Select().ToSingle();
            }
        }
Beispiel #14
0
        public void Entity_Delete_Operation_Deletes_Only_Entity_Record()
        {
            var schema = new DataSchemaBuilder()
                         .AddSqlEntity <Flat_Entity>()
                         .Build();
            var sqlDataModel = schema.Sql.SqlEntities.OfType <SqlDataModel <Flat_Entity> >().First();

            using (var dataProvider = DataProvider.CreateTestProvider())
            {
                dataProvider.ExecuteNonQuery(Sqlite3QueryExpression.Raw($@"
					CREATE TABLE {sqlDataModel.StorageModel.DefaultTableName}
					(
						[Id] INTEGER PRIMARY KEY AUTOINCREMENT,
						[Value] INTEGER
					)"                    ));

                dataProvider.ExecuteNonQuery(QueryExpression.Insert(
                                                 QueryExpression.Table(sqlDataModel.StorageModel.DefaultTableName),
                                                 new[] { QueryExpression.Column("Value") },
                                                 new[] { QueryExpression.Value(5) },
                                                 new[] { QueryExpression.Value(5) }
                                                 ));

                var dataSet = new SqlDataSet <Flat_Entity>(sqlDataModel, dataProvider);
                var entity  = new Flat_Entity {
                    Id = 1
                };
                dataSet.Delete(entity).Execute();

                using (var queryResult = dataProvider.ExecuteReader(QueryExpression.Select(new[] { QueryExpression.All() }, from: QueryExpression.Table(sqlDataModel.StorageModel.DefaultTableName))))
                {
                    Assert.IsTrue(queryResult.HasRows);
                }
            }
        }
Beispiel #15
0
        public void Insert_Flat_Entity_Into_NonDefault_Table()
        {
            var tableName = "MyCustomTable";
            var schema    = new DataSchemaBuilder()
                            .AddSqlEntity <Flat_Entity>()
                            .Build();
            var sqlDataModel = schema.Sql.SqlEntities.OfType <SqlDataModel <Flat_Entity> >().First();

            using (var dataProvider = DataProvider.CreateTestProvider())
            {
                dataProvider.ExecuteNonQuery(Sqlite3QueryExpression.Raw($@"
					CREATE TABLE MyCustomTable
					(
						[Value] INTEGER
					)"                    ));

                var dataSet = new SqlDataSet <Flat_Entity>(sqlDataModel, dataProvider);

                var value = 5;
                dataSet.Insert(new Flat_Entity {
                    Value = value
                }).Table(tableName).Execute();

                using (var result = dataProvider.ExecuteReader(QueryExpression.Select(new[] { QueryExpression.All() }, from: QueryExpression.Table(tableName))))
                {
                    Assert.IsTrue(result.HasRows);
                    Assert.IsTrue(result.Read());
                    Assert.AreEqual(value, result.GetInt32(0));
                }
            }
        }
Beispiel #16
0
        public void Insert_Flat_View_With_Binding()
        {
            var schema = new DataSchemaBuilder()
                         .AddSqlEntity <Flat_Entity>()
                         .Build();
            var sqlDataModel = schema.Sql.SqlEntities.OfType <SqlDataModel <Flat_Entity> >().First();

            using (var dataProvider = DataProvider.CreateTestProvider())
            {
                dataProvider.ExecuteNonQuery(Sqlite3QueryExpression.Raw($@"
					CREATE TABLE {sqlDataModel.StorageModel.DefaultTableName}
					(
						[Value] INTEGER
					)"                    ));

                var dataSet = new SqlDataSet <Flat_Entity>(sqlDataModel, dataProvider);
                var value   = 5;
                var view    = new { Custom = 5 };

                dataSet.Insert(view, binding => binding.Bind(t => t.Value, s => s.Custom)).Execute();

                using (var result = dataProvider.ExecuteReader(QueryExpression.Select(new[] { QueryExpression.All() }, from: QueryExpression.Table(sqlDataModel.StorageModel.DefaultTableName))))
                {
                    Assert.IsTrue(result.HasRows);
                    Assert.IsTrue(result.Read());
                    Assert.AreEqual(value, result.GetInt32(0));
                }
            }
        }
Beispiel #17
0
        public void Can_Insert_Entity_With_Null_Member()
        {
            var schema = new DataSchemaBuilder()
                         .AddSqlEntity <Complex_Entity>()
                         .Build();
            var sqlDataModel = schema.Sql.SqlEntities.OfType <SqlDataModel <Complex_Entity> >().First();

            using (var dataProvider = DataProvider.CreateTestProvider())
            {
                dataProvider.ExecuteNonQuery(Sqlite3QueryExpression.Raw($@"
					CREATE TABLE {sqlDataModel.StorageModel.DefaultTableName}
					(
						[Value] INTEGER,
						[Flat_Value] INTEGER,
						[Flat_Id] INTEGER
					)"                    ));

                var dataSet = new SqlDataSet <Complex_Entity>(sqlDataModel, dataProvider);

                var entity = new Complex_Entity
                {
                    Value = 5
                };
                dataSet.Insert(entity).Execute();

                using (var result = dataProvider.ExecuteReader(QueryExpression.Select(new[] { QueryExpression.All() }, from: QueryExpression.Table(sqlDataModel.StorageModel.DefaultTableName))))
                {
                    Assert.IsTrue(result.HasRows);
                    Assert.IsTrue(result.Read());
                    Assert.AreEqual(entity.Value, result.GetInt32(0));
                    Assert.AreEqual(0, result.GetInt32(1));
                }
            }
        }
Beispiel #18
0
        public void Can_Select_Computed_Field_With_Expression()
        {
            var schema = new DataSchemaBuilder()
                         .AddSqlEntity <Entity_With_Computed_Field>()
                         .Build();
            var sqlDataModel = schema.Sql.SqlEntities.OfType <SqlDataModel <Entity_With_Computed_Field> >().First();

            using (var dataProvider = DataProvider.CreateTestProvider())
            {
                dataProvider.ExecuteNonQuery(Sqlite3QueryExpression.Raw($@"
					CREATE TABLE {sqlDataModel.StorageModel.DefaultTableName}
					(
						[Id] INTEGER PRIMARY KEY AUTOINCREMENT,
						[A] INTEGER,
						[B] INTEGER,
						[C] INTEGER
					)"                    ));

                dataProvider.ExecuteNonQuery(QueryExpression.Insert(
                                                 QueryExpression.Table(sqlDataModel.StorageModel.DefaultTableName),
                                                 new[] { QueryExpression.Column("A"), QueryExpression.Column("B"), QueryExpression.Column("C") },
                                                 new[] { QueryExpression.Value(1), QueryExpression.Value(1), QueryExpression.Value(3) } //  note C isn't A + B as defined on the entity class itself to prove it's read direct from the db
                                                 ));

                var dataSet = new SqlDataSet <Entity_With_Computed_Field>(sqlDataModel, dataProvider);
                var value   = dataSet.Select(q => q.C).ToSingle();
                Assert.AreEqual(3, value);
            }
        }
Beispiel #19
0
        public void Insert_Default_Values()
        {
            var defaultValue = 4;
            var schema       = new DataSchemaBuilder()
                               .AddSqlEntity <Flat_Entity>(cfg => cfg.Field(q => q.Value, cfg => cfg.DefaultValue(() => defaultValue)))
                               .Build();
            var sqlDataModel = schema.Sql.SqlEntities.OfType <SqlDataModel <Flat_Entity> >().First();

            using (var dataProvider = DataProvider.CreateTestProvider())
            {
                dataProvider.ExecuteNonQuery(Sqlite3QueryExpression.Raw($@"
					CREATE TABLE {sqlDataModel.StorageModel.DefaultTableName}
					(
						[Value] INTEGER
					)"                    ));

                var dataSet = new SqlDataSet <Flat_Entity>(sqlDataModel, dataProvider);

                dataSet.Insert().Execute();

                using (var result = dataProvider.ExecuteReader(QueryExpression.Select(new[] { QueryExpression.All() }, from: QueryExpression.Table(sqlDataModel.StorageModel.DefaultTableName))))
                {
                    Assert.IsTrue(result.HasRows);
                    Assert.IsTrue(result.Read());
                    Assert.AreEqual(defaultValue, result.GetInt32(0));
                }
            }
        }
Beispiel #20
0
        public void Select_Expression_With_Complex_Join_Returns_Value()
        {
            var schema = new DataSchemaBuilder()
                         .AddSqlEntity <Really_Complex_Entity>()
                         .AddSqlEntity <Complex_Entity>()
                         .AddSqlEntity <Flat_Entity>()
                         .Build();
            var sqlDataModel = schema.Sql.SqlEntities.OfType <SqlDataModel <Really_Complex_Entity> >().First();

            using (var dataProvider = DataProvider.CreateTestProvider())
            {
                dataProvider.ExecuteNonQuery(Sqlite3QueryExpression.Raw($@"
					CREATE TABLE Flat_Entity
					(
						[Id] INTEGER PRIMARY KEY AUTOINCREMENT,
						[Value] INTEGER
					)"                    ));
                dataProvider.ExecuteNonQuery(Sqlite3QueryExpression.Raw($@"
					CREATE TABLE Complex_Entity
					(
						[Id] INTEGER PRIMARY KEY AUTOINCREMENT,
						[Value] INTEGER,
						[Flat_Id] INTEGER
					)"                    ));

                dataProvider.ExecuteNonQuery(Sqlite3QueryExpression.Raw($@"
					CREATE TABLE {sqlDataModel.StorageModel.DefaultTableName}
					(
						[Id] INTEGER PRIMARY KEY AUTOINCREMENT,
						[Value] INTEGER,
						[Complex_Id] INTEGER,
						[Flat_Id] INTEGER
					)"                    ));

                dataProvider.ExecuteNonQuery(QueryExpression.Insert(
                                                 QueryExpression.Table("Flat_Entity"),
                                                 new[] { QueryExpression.Column("Value") },
                                                 new[] { QueryExpression.Value(7) },
                                                 new[] { QueryExpression.Value(8) }
                                                 ));

                dataProvider.ExecuteNonQuery(QueryExpression.Insert(
                                                 QueryExpression.Table("Complex_Entity"),
                                                 new[] { QueryExpression.Column("Value"), QueryExpression.Column("Flat_Id") },
                                                 new[] { QueryExpression.Value(6), QueryExpression.Value(1) }
                                                 ));

                dataProvider.ExecuteNonQuery(QueryExpression.Insert(
                                                 QueryExpression.Table(sqlDataModel.StorageModel.DefaultTableName),
                                                 new[] { QueryExpression.Column("Value"), QueryExpression.Column("Flat_Id"), QueryExpression.Column("Complex_Id") },
                                                 new[] { QueryExpression.Value(5), QueryExpression.Value(2), QueryExpression.Value(1) }
                                                 ));

                var dataSet  = new SqlDataSet <Really_Complex_Entity>(sqlDataModel, dataProvider);
                var valueSet = dataSet.Select(q => q.Complex.Flat.Value).ToList();

                Assert.AreEqual(7, valueSet[0]);
            }
        }
Beispiel #21
0
        public void Insert_Complex_Entity_With_Relationship_View()
        {
            var schema = new DataSchemaBuilder()
                         .AddSqlEntity <Flat_Entity>()
                         .AddSqlEntity <Complex_Entity>()
                         .Build();
            var flatDataModel    = schema.Sql.SqlEntities.OfType <SqlDataModel <Flat_Entity> >().First();
            var complexDataModel = schema.Sql.SqlEntities.OfType <SqlDataModel <Complex_Entity> >().First();

            using (var dataProvider = DataProvider.CreateTestProvider())
            {
                dataProvider.ExecuteNonQuery(Sqlite3QueryExpression.Raw($@"
					CREATE TABLE {flatDataModel.StorageModel.DefaultTableName}
					(
						[Value] INTEGER,
						[Id] INTEGER PRIMARY KEY AUTOINCREMENT
					)"                    ));
                dataProvider.ExecuteNonQuery(Sqlite3QueryExpression.Raw($@"
					CREATE TABLE {complexDataModel.StorageModel.DefaultTableName}
					(
						[Value] INTEGER,
						[Flat_Id] INTEGER
					)"                    ));

                var flatDataSet    = new SqlDataSet <Flat_Entity>(flatDataModel, dataProvider);
                var complexDataSet = new SqlDataSet <Complex_Entity>(complexDataModel, dataProvider);

                //  the ID here isn't written to the INSERT query because the ORM see's it as server generated (which it should be)
                var flatEntity = new Flat_Entity {
                    Id = 1, Value = 5
                };
                var complexEntityView = new { Value = 6, FlatId = flatEntity.Id };

                flatDataSet.Insert(flatEntity).Execute();
                complexDataSet.Insert(complexEntityView).Execute();

                using (var result = dataProvider.ExecuteReader(QueryExpression.Select(
                                                                   new[] { QueryExpression.All() },
                                                                   from: QueryExpression.Table(complexDataModel.StorageModel.DefaultTableName),
                                                                   joins: new[]
                {
                    QueryExpression.Join(
                        QueryExpression.Table(flatDataModel.StorageModel.DefaultTableName),
                        QueryExpression.AreEqual(
                            QueryExpression.Column("Flat_Id", QueryExpression.Table(complexDataModel.StorageModel.DefaultTableName)),
                            QueryExpression.Column("Id", QueryExpression.Table(flatDataModel.StorageModel.DefaultTableName))
                            )
                        )
                })))
                {
                    Assert.IsTrue(result.HasRows);
                    Assert.IsTrue(result.Read());
                    Assert.AreEqual(complexEntityView.Value, result.GetInt32(0));
                    Assert.AreEqual(complexEntityView.FlatId, result.GetInt32(1));
                    Assert.AreEqual(flatEntity.Value, result.GetInt32(2));
                    Assert.AreEqual(flatEntity.Id, result.GetInt32(3));
                }
            }
        }
Beispiel #22
0
        //------------------------------------------------------------------
        // Métodos de usuario.
        //------------------------------------------------------------------

        // Leer DataRow.
        public Char OdbcSeekRow(string SeekFichero,
                                string SeekFields = "*",
                                string SeekWhere  = "1=1",
                                string SeekOrder  = "",
                                string SeekGroup  = "")
        {
            Char retorno = 'S';

            _inicializar();

            try
            {
                // Montar la sentencia SQL.
                sqlsql  = "Select " + (SeekFields == "" ? " * " : SeekFields);
                sqlsql += " From " + SeekFichero;
                sqlsql += (SeekWhere == "" ? "1=1" : " Where " + SeekWhere);
                sqlsql += (SeekOrder == "" ? "" : " Order By " + SeekOrder);
                sqlsql += (SeekGroup == "" ? "" : " Group By " + SeekGroup);

                // cmTF.Connection = cnTF;          // This way or CreateCommand().
                cmTF             = cnTF.CreateCommand(); // This way or Set connection parameter.
                cmTF.CommandType = CommandType.Text;
                cmTF.CommandText = sqlsql;

                sqldatatable   = new DataTable(SeekFichero);
                sqldataadapter = new OdbcDataAdapter(cmTF);
                sqldataset     = new DataSet();

                sqlnoofrows    = sqldataadapter.Fill(sqldataset, SeekFichero);
                sqldatatable   = sqldataset.Tables[SeekFichero];
                sqltablereader = SqlDataSet.CreateDataReader();

                retorno = (SqlNoOfRows > 0) ? 'S' : 'N';
                if (retorno == 'S')
                {
                    // DataRow a devolver.
                    sqldatarow = sqldatatable.NewRow();
                    sqldatarow = sqldataset.Tables[SeekFichero].Rows[0];
                }
            }

            catch (OdbcException ex)
            {
                sqlstatus = -1;
                UsrErrorC = ex.HResult;
                UsrError  = ex.Message;
                UsrErrorE = ex.StackTrace;

                retorno = 'C';
            }

            return(retorno);
        }
Beispiel #23
0
        public void Select_Entity_With_Join_Returns_Entity()
        {
            var schema = new DataSchemaBuilder()
                         .AddSqlEntity <Complex_Entity>()
                         .AddSqlEntity <Flat_Entity>()
                         .Build();
            var sqlDataModel = schema.Sql.SqlEntities.OfType <SqlDataModel <Complex_Entity> >().First();

            using (var dataProvider = DataProvider.CreateTestProvider())
            {
                dataProvider.ExecuteNonQuery(Sqlite3QueryExpression.Raw($@"
					CREATE TABLE Flat_Entity
					(
						[Id] INTEGER PRIMARY KEY AUTOINCREMENT,
						[Value] INTEGER
					)"                    ));
                dataProvider.ExecuteNonQuery(Sqlite3QueryExpression.Raw($@"
					CREATE TABLE {sqlDataModel.StorageModel.DefaultTableName}
					(
						[Id] INTEGER PRIMARY KEY AUTOINCREMENT,
						[Value] INTEGER,
						[Flat_Id] INTEGER
					)"                    ));

                dataProvider.ExecuteNonQuery(QueryExpression.Insert(
                                                 QueryExpression.Table("Flat_Entity"),
                                                 new[] { QueryExpression.Column("Value") },
                                                 new[] { QueryExpression.Value(5) },
                                                 new[] { QueryExpression.Value(6) }
                                                 ));

                dataProvider.ExecuteNonQuery(QueryExpression.Insert(
                                                 QueryExpression.Table(sqlDataModel.StorageModel.DefaultTableName),
                                                 new[] { QueryExpression.Column("Value"), QueryExpression.Column("Flat_Id") },
                                                 new[] { QueryExpression.Value(3), QueryExpression.Value(1) },
                                                 new[] { QueryExpression.Value(4), QueryExpression.Value(2) }
                                                 ));

                var dataSet   = new SqlDataSet <Complex_Entity>(sqlDataModel, dataProvider);
                var entitySet = dataSet.Select().ToList();

                Assert.IsTrue(
                    entitySet.Select(q => q.Value).SequenceEqual(new[] { 3, 4 })
                    );
                Assert.IsTrue(
                    entitySet.Select(q => q.Flat.Id).SequenceEqual(new[] { 1, 2 })
                    );
                Assert.IsTrue(
                    entitySet.Select(q => q.Flat.Value).SequenceEqual(new[] { 5, 6 })
                    );
            }
        }
Beispiel #24
0
        public void Insert_Complex_Embedded_View_With_Complex_Type_Binding()
        {
            var schema = new DataSchemaBuilder()
                         .AddSqlEntity <Complex_Entity>()
                         .Build();
            var sqlDataModel = schema.Sql.SqlEntities.OfType <SqlDataModel <Complex_Entity> >().First();

            using (var dataProvider = DataProvider.CreateTestProvider())
            {
                dataProvider.ExecuteNonQuery(Sqlite3QueryExpression.Raw($@"
					CREATE TABLE {sqlDataModel.StorageModel.DefaultTableName}
					(
						[Value] INTEGER,
						[Flat_Value] INTEGER,
						[Flat_Id] INTEGER
					)"                    ));

                var dataSet = new SqlDataSet <Complex_Entity>(sqlDataModel, dataProvider);

                var view = new
                {
                    TopValue  = 5,
                    DeepValue = 6
                };
                dataSet.Insert(view, binding =>
                {
                    binding
                    .Bind(t => t.Value, s => s.TopValue)
                    .Bind(t => t.Flat, s => s.DeepValue, value => new Flat_Entity {
                        Value = value
                    });
                }).Execute();

                using (var result = dataProvider.ExecuteReader(QueryExpression.Select(new[] { QueryExpression.All() }, from: QueryExpression.Table(sqlDataModel.StorageModel.DefaultTableName))))
                {
                    Assert.IsTrue(result.HasRows);
                    Assert.IsTrue(result.Read());
                    Assert.AreEqual(view.TopValue, result.GetInt32(0));
                    Assert.AreEqual(view.DeepValue, result.GetInt32(1));
                }
            }
        }
Beispiel #25
0
        public void Insert_Returns_Number_Of_Inserted_Rows()
        {
            var schema = new DataSchemaBuilder()
                         .AddSqlEntity <Flat_Entity>()
                         .Build();
            var sqlDataModel = schema.Sql.SqlEntities.OfType <SqlDataModel <Flat_Entity> >().First();

            using (var dataProvider = DataProvider.CreateTestProvider())
            {
                dataProvider.ExecuteNonQuery(Sqlite3QueryExpression.Raw($@"
					CREATE TABLE {sqlDataModel.StorageModel.DefaultTableName}
					(
						[Value] INTEGER
					)"                    ));

                var dataSet = new SqlDataSet <Flat_Entity>(sqlDataModel, dataProvider);

                var value = 5;
                Assert.AreEqual(1, dataSet.Insert(new Flat_Entity {
                    Value = value
                }).Execute());
            }
        }
Beispiel #26
0
        public void Can_Select_Bound_Complex_Type_With_Transform()
        {
            var schema = new DataSchemaBuilder()
                         .AddSqlEntity <Has_Complex_Type>()
                         .Build();
            var sqlDataModel = schema.Sql.SqlEntities.OfType <SqlDataModel <Has_Complex_Type> >().First();

            using (var dataProvider = DataProvider.CreateTestProvider())
            {
                dataProvider.ExecuteNonQuery(Sqlite3QueryExpression.Raw($@"
					CREATE TABLE {sqlDataModel.StorageModel.DefaultTableName}
					(
						[Complex_A] INTEGER,
						[Complex_B] INTEGER
					)"                    ));

                var a = 2;
                var b = 4;

                dataProvider.ExecuteNonQuery(QueryExpression.Insert(
                                                 QueryExpression.Table(sqlDataModel.StorageModel.DefaultTableName),
                                                 new[] { QueryExpression.Column("Complex_A"), QueryExpression.Column("Complex_B") },
                                                 new[] { QueryExpression.Value(a), QueryExpression.Value(b) }
                                                 ));

                var binding = new TypeBindingBuilder <Has_Complex_Type, Custom_View>()
                              .Bind(q => q.Sum, q => q.Complex, o => o.A + o.B)
                              .Bind(q => q.Product, q => q.Complex, o => o.A * o.B)
                              .BuildBinding();

                var dataSet = new SqlDataSet <Has_Complex_Type>(sqlDataModel, dataProvider);
                var result  = dataSet.Select <Custom_View>(binding).ToSingle();

                Assert.AreEqual(a + b, result.Sum);
                Assert.AreEqual(a * b, result.Product);
            }
        }
Beispiel #27
0
 protected SqlDataOperation(SqlDataSet <TEntity> dataSet, IQueryProvider queryProvider) : base(dataSet, queryProvider)
 {
 }
        public async static Task <Mitarbeiter> LoadAsync(ISqlHandler Sql, string[] fields, int Id)
        {
            SqlDataSet data = await Sql.SelectWhereAsync(Table, SqlUtility.AppendWithCommas(fields), SqlUtility.Equal(FieldId, Id));

            Mitarbeiter mit = new Mitarbeiter();

            for (int i = 0; i < data.FieldCount; i++)
            {
                string f = data.FieldNames[i];
                object o = data.Data[0][i];
                if (o is DBNull)
                {
                    o = default(object);
                }
                if (f == FieldId)
                {
                    mit.Id = (int)o;
                }
                else if (f == FieldKennung)
                {
                    mit.Kennung = (string)o;
                }
                else if (f == FieldName)
                {
                    mit.Name = (string)o;
                }
                else if (f == FieldVorname)
                {
                    mit.Vorname = (string)o;
                }
                else if (f == FieldFähigkeiten)
                {
                    mit.Fähigkeiten = (string)o;
                }
                else if (f == FieldSchicht)
                {
                    mit.Schicht.Id = (int)o;
                }
                else if (f == FieldTelefon)
                {
                    mit.Kontakt.Rufnummern.Add(new Rufnummer((string)o, RufnummerTyp.FestnetzPrivat));
                }
                else if (f == FieldMobil)
                {
                    mit.Kontakt.Rufnummern.Add(new Rufnummer((string)o, RufnummerTyp.MobilDienst));
                }
                else if (f == FieldTelefonIntern)
                {
                    mit.Kontakt.Rufnummern.Add(new Rufnummer((string)o, RufnummerTyp.FestnetzIntern));
                }
                else if (f == FieldFaxIntern)
                {
                    mit.Kontakt.Rufnummern.Add(new Rufnummer((string)o, RufnummerTyp.FaxIntern));
                }
                else if (f == FieldEMail)
                {
                    mit.Kontakt.EMail = (string)o;
                }
            }
            return(mit);
        }
        public async static Task <List <Mitarbeiter> > LoadAllAsync(string[] Fields, ISqlHandler Sql)
        {
            SqlDataSet data = await Sql.SelectAsync(Table, SqlUtility.AppendWithCommas(Fields));

            List <Mitarbeiter> mitarbeiter = new List <Mitarbeiter>();

            foreach (List <object> singleData in data.Data)
            {
                Mitarbeiter mit = new Mitarbeiter();
                for (int i = 0; i < data.FieldCount; i++)
                {
                    string f = data.FieldNames[i];
                    object o = singleData[i];
                    if (o is DBNull)
                    {
                        o = default(object);
                    }
                    if (f == FieldId)
                    {
                        mit.Id = (int)o;
                    }
                    else if (f == FieldKennung)
                    {
                        mit.Kennung = (string)o;
                    }
                    else if (f == FieldName)
                    {
                        mit.Name = (string)o;
                    }
                    else if (f == FieldVorname)
                    {
                        mit.Vorname = (string)o;
                    }
                    else if (f == FieldFähigkeiten)
                    {
                        mit.Fähigkeiten = (string)o;
                    }
                    else if (f == FieldSchicht)
                    {
                        mit.Schicht.Id = (int)o;
                    }
                    else if (f == FieldTelefon)
                    {
                        mit.Kontakt.Rufnummern.Add(new Rufnummer((string)o, RufnummerTyp.FestnetzPrivat));
                    }
                    else if (f == FieldMobil)
                    {
                        mit.Kontakt.Rufnummern.Add(new Rufnummer((string)o, RufnummerTyp.MobilDienst));
                    }
                    else if (f == FieldTelefonIntern)
                    {
                        mit.Kontakt.Rufnummern.Add(new Rufnummer((string)o, RufnummerTyp.FestnetzIntern));
                    }
                    else if (f == FieldFaxIntern)
                    {
                        mit.Kontakt.Rufnummern.Add(new Rufnummer((string)o, RufnummerTyp.FaxIntern));
                    }
                    else if (f == FieldEMail)
                    {
                        mit.Kontakt.EMail = (string)o;
                    }
                }
                mitarbeiter.Add(mit);
            }
            return(mitarbeiter);
        }
Beispiel #30
0
 public SqlDeleteOperation(SqlDataSet <TEntity> dataSet, IQueryProvider queryProvider) : base(dataSet, queryProvider)
 {
     _queryBuilder = new SqlDeleteBuilder <TEntity>(DataSet.DataModel);
 }