示例#1
0
        public EntityType(EntityType entityType, IEnumerable <FieldType> fields)
        {
            Name = entityType.Name;
            this.SqlTable(Name, "id");
            _dialect = new SQLiteDialect();

            fields.ToList().ForEach(f =>
            {
                FillArgs(f.Name);
                this.AddField(f);
            });

            TableArgs.Add(new QueryArgument <IdGraphType> {
                Name = "number"
            });
            TableArgs.Add(new QueryArgument <IntGraphType> {
                Name = "first"
            });
            TableArgs.Add(new QueryArgument <IntGraphType> {
                Name = "offset"
            });
            TableArgs.Add(new QueryArgument <StringGraphType> {
                Name = "includes"
            });
        }
示例#2
0
        public void PageQueryThrowsArgumentNullExceptionForNullSqlCharacters()
        {
            var sqlDialect = new SQLiteDialect();

            var exception = Assert.Throws <ArgumentNullException>(
                () => sqlDialect.PageQuery(null, PagingOptions.None));
        }
示例#3
0
        public void PageWithWhereAndOrderByMultiLine()
        {
            var sqlDialect = new SQLiteDialect();

            var sqlQuery = new SqlQuery(@"SELECT
 CustomerId,
 Name,
 DateOfBirth,
 CustomerStatusId
 FROM
 Customers
 WHERE
 CustomerStatusId = @p0
 ORDER BY
 Name ASC", CustomerStatus.Active);

            var paged = sqlDialect.PageQuery(sqlQuery, PagingOptions.ForPage(page: 1, resultsPerPage: 25));

            Assert.Equal("SELECT CustomerId, Name, DateOfBirth, CustomerStatusId FROM Customers WHERE CustomerStatusId = @p0 ORDER BY Name ASC LIMIT @p1,@p2", paged.CommandText);
            Assert.Equal(sqlQuery.Arguments[0], paged.Arguments[0]);

            Assert.Equal(DbType.Int32, paged.Arguments[1].DbType);
            Assert.Equal(0, paged.Arguments[1].Value);

            Assert.Equal(DbType.Int32, paged.Arguments[2].DbType);
            Assert.Equal(25, paged.Arguments[2].Value);
        }
示例#4
0
        public void Quote_WithString_QuotesString()
        {
            var dialect = new SQLiteDialect();

            var quoted = dialect.Quote("product");

            quoted.Should().Be("\"product\"");
        }
示例#5
0
        public void CompositeKey_WithParentTableAndKeys_ReturnsCombinedString()
        {
            var dialect = new SQLiteDialect();

            var sql = dialect.CompositeKey("people", new[] { "id", "firstName", "lastName" });

            sql.Should().Be("\"people\".\"id\" || \"people\".\"firstName\" || \"people\".\"lastName\"");
        }
示例#6
0
        public void HandleJoinedOneToManyPaginated_WhenCalled_ThrowsNotSupportedException()
        {
            var dialect = new SQLiteDialect();

            Action action = () => dialect.HandleJoinedOneToManyPaginated(null, null, null, null, null, null, null);

            action.Should().Throw <NotSupportedException>();
        }
示例#7
0
        public void BuildSelectInsertIdSqlQuery()
        {
            var sqlDialect = new SQLiteDialect();

            var sqlQuery = sqlDialect.BuildSelectInsertIdSqlQuery(ObjectInfo.For(typeof(Customer)));

            Assert.Equal("SELECT last_insert_rowid()", sqlQuery.CommandText);
            Assert.Equal(0, sqlQuery.Arguments.Count);
            Assert.Equal(0, sqlQuery.Arguments.Count);
        }
        public void IntegratedSchema()
        {
            var cfg     = TestConfiguration.Configuration.IntegrateWithActsAsVersioned();
            var dialect = new SQLiteDialect();
            var lines   = cfg.GenerateSchemaCreationScript(dialect);

            foreach (var line in lines)
            {
                Output.WriteLine(line);
            }
        }
示例#9
0
        public void PageWithNoWhereOrOrderBySecondResultsPage()
        {
            var sqlDialect = new SQLiteDialect();

            var sqlQuery = new SqlQuery("SELECT CustomerId, Name, DateOfBirth, CustomerStatusId FROM Customers");

            var paged = sqlDialect.PageQuery(sqlQuery, PagingOptions.ForPage(page: 2, resultsPerPage: 25));

            Assert.Equal("SELECT CustomerId, Name, DateOfBirth, CustomerStatusId FROM Customers LIMIT @p0,@p1", paged.CommandText);

            Assert.Equal(DbType.Int32, paged.Arguments[0].DbType);
            Assert.Equal(25, paged.Arguments[0].Value);

            Assert.Equal(DbType.Int32, paged.Arguments[1].DbType);
            Assert.Equal(25, paged.Arguments[1].Value);
        }
示例#10
0
        public void PageNonQualifiedWildcardQuery()
        {
            var sqlDialect = new SQLiteDialect();

            var sqlQuery = new SqlQuery("SELECT * FROM Customers");

            var paged = sqlDialect.PageQuery(sqlQuery, PagingOptions.ForPage(page: 1, resultsPerPage: 25));

            Assert.Equal("SELECT * FROM Customers LIMIT @p0,@p1", paged.CommandText);

            Assert.Equal(DbType.Int32, paged.Arguments[0].DbType);
            Assert.Equal(0, paged.Arguments[0].Value);

            Assert.Equal(DbType.Int32, paged.Arguments[1].DbType);
            Assert.Equal(25, paged.Arguments[1].Value);
        }
示例#11
0
        public void UpdateInstanceQuery()
        {
            ObjectInfo.MappingConvention = new ConventionMappingConvention(
                UnitTest.GetConventionMappingSettings(IdentifierStrategy.Assigned));

            var sqlDialect = new SQLiteDialect();

            var customer = new Customer
            {
                Created     = new DateTime(2011, 12, 24),
                CreditLimit = 10500.00M,
                DateOfBirth = new System.DateTime(1975, 9, 18),
                Id          = 134875,
                Name        = "Joe Bloggs",
                Status      = CustomerStatus.Active,
                Updated     = DateTime.Now,
                Website     = new Uri("http://microliteorm.wordpress.com")
            };

            var sqlQuery = sqlDialect.BuildUpdateSqlQuery(ObjectInfo.For(typeof(Customer)), customer);

            Assert.Equal("UPDATE \"Sales\".\"Customers\" SET \"CreditLimit\" = @p0,\"DateOfBirth\" = @p1,\"Name\" = @p2,\"CustomerStatusId\" = @p3,\"Updated\" = @p4,\"Website\" = @p5 WHERE (\"Id\" = @p6)", sqlQuery.CommandText);
            Assert.Equal(7, sqlQuery.Arguments.Count);

            Assert.Equal(DbType.Decimal, sqlQuery.Arguments[0].DbType);
            Assert.Equal(customer.CreditLimit, sqlQuery.Arguments[0].Value);

            Assert.Equal(DbType.DateTime2, sqlQuery.Arguments[1].DbType);
            Assert.Equal(customer.DateOfBirth, sqlQuery.Arguments[1].Value);

            Assert.Equal(DbType.String, sqlQuery.Arguments[2].DbType);
            Assert.Equal(customer.Name, sqlQuery.Arguments[2].Value);

            Assert.Equal(DbType.Int32, sqlQuery.Arguments[3].DbType);
            Assert.Equal((int)customer.Status, sqlQuery.Arguments[3].Value);

            Assert.Equal(DbType.DateTime2, sqlQuery.Arguments[4].DbType);
            Assert.Equal(customer.Updated, sqlQuery.Arguments[4].Value);

            Assert.Equal(DbType.String, sqlQuery.Arguments[5].DbType);
            Assert.Equal("http://microliteorm.wordpress.com/", sqlQuery.Arguments[5].Value);

            Assert.Equal(DbType.Int32, sqlQuery.Arguments[6].DbType);
            Assert.Equal(customer.Id, sqlQuery.Arguments[6].Value);
        }
示例#12
0
        public EntityType(EntityMetadata tableMetadata)
        {
            Name = tableMetadata.TableName;
            this.SqlTable(tableMetadata.TableName, "id");
            foreach (var tableColumn in tableMetadata.Columns)
            {
                InitGraphTableColumn(tableColumn, Name);
            }
            _dialect = new SQLiteDialect();


            TableArgs.Add(new QueryArgument <IdGraphType> {
                Name = "number"
            });
            TableArgs.Add(new QueryArgument <IntGraphType> {
                Name = "first"
            });
            TableArgs.Add(new QueryArgument <IntGraphType> {
                Name = "offset"
            });
            TableArgs.Add(new QueryArgument <StringGraphType> {
                Name = "includes"
            });
            if (EntitiesAlreadyCreated.ContainsKey(tableMetadata.TableName))
            {
                EntitiesAlreadyCreated.Remove(tableMetadata.TableName);
            }

            EntityType x = this;
            var        y = (EntityType)this.Fields.FirstOrDefault(f => !string.IsNullOrEmpty(f.Description))?.ResolvedType;

            if (y != null)
            {
                var yy = (EntityType)y.Fields.FirstOrDefault(f => !string.IsNullOrEmpty(f.Description))?.ResolvedType;
                var zz = yy?.Fields.FirstOrDefault(f => f.Name == tableMetadata.EntityName);
                if (zz != null)
                {
                    var list = yy.Fields.Where(f => f.Name != tableMetadata.EntityName);
                    x = new EntityType(this, list);
                }
            }

            EntitiesAlreadyCreated.Add(tableMetadata.TableName, x);
        }
示例#13
0
        public void InsertInstanceQueryForIdentifierStrategyDbGenerated()
        {
            ObjectInfo.MappingConvention = new ConventionMappingConvention(
                UnitTest.GetConventionMappingSettings(IdentifierStrategy.DbGenerated));

            var sqlDialect = new SQLiteDialect();

            var customer = new Customer
            {
                Created     = new DateTime(2011, 12, 24),
                CreditLimit = 10500.00M,
                DateOfBirth = new System.DateTime(1975, 9, 18),
                Name        = "Joe Bloggs",
                Status      = CustomerStatus.Active,
                Updated     = DateTime.Now,
                Website     = new Uri("http://microliteorm.wordpress.com")
            };

            var sqlQuery = sqlDialect.BuildInsertSqlQuery(ObjectInfo.For(typeof(Customer)), customer);

            Assert.Equal("INSERT INTO \"Sales\".\"Customers\" (\"Created\",\"CreditLimit\",\"DateOfBirth\",\"Name\",\"CustomerStatusId\",\"Website\") VALUES (@p0,@p1,@p2,@p3,@p4,@p5)", sqlQuery.CommandText);
            Assert.Equal(6, sqlQuery.Arguments.Count);

            Assert.Equal(DbType.DateTime, sqlQuery.Arguments[0].DbType);
            Assert.Equal(customer.Created, sqlQuery.Arguments[0].Value);

            Assert.Equal(DbType.Decimal, sqlQuery.Arguments[1].DbType);
            Assert.Equal(customer.CreditLimit, sqlQuery.Arguments[1].Value);

            Assert.Equal(DbType.DateTime, sqlQuery.Arguments[2].DbType);
            Assert.Equal(customer.DateOfBirth, sqlQuery.Arguments[2].Value);

            Assert.Equal(DbType.String, sqlQuery.Arguments[3].DbType);
            Assert.Equal(customer.Name, sqlQuery.Arguments[3].Value);

            Assert.Equal(DbType.Int32, sqlQuery.Arguments[4].DbType);
            Assert.Equal((int)customer.Status, sqlQuery.Arguments[4].Value);

            Assert.Equal(DbType.String, sqlQuery.Arguments[5].DbType);
            Assert.Equal("http://microliteorm.wordpress.com/", sqlQuery.Arguments[5].Value);
        }
示例#14
0
        public void SupportsSelectInsertedIdentifierReturnsTrue()
        {
            var sqlDialect = new SQLiteDialect();

            Assert.True(sqlDialect.SupportsSelectInsertedIdentifier);
        }
 public void SetUp()
 {
     dialect = new SQLiteDialect();
     registry = new SQLFunctionRegistry(dialect, new Dictionary<string, ISQLFunction>());
 }
 public void Setup()
 {
     Dialect = new SQLiteDialect();
 }
 public void SetUp()
 {
     dialect = new SQLiteDialect();
 }
 public void SetUp()
 {
     dialect  = new SQLiteDialect();
     registry = new SQLFunctionRegistry(dialect, new Dictionary <string, ISQLFunction>());
 }
 public void SetUp()
 {
     dialect = new SQLiteDialect();
 }