コード例 #1
0
        public async Task Parse()
        {
            IDatabase database = new Butterfly.Core.Database.Memory.MemoryDatabase();
            await database.CreateFromResourceFileAsync(Assembly.GetExecutingAssembly(), "Butterfly.Core.Test.db.sql");

            var tableRefs = StatementFromRef.ParseFromRefs(database, "employee_contact ec INNER JOIN employee e ON ec.employee_id=e.id AND 1=2 left JOIN department d on e.department_id=d.id and 1=2");

            Assert.AreEqual(3, tableRefs.Length);
            Assert.AreEqual(tableRefs[0].table.Name, "employee_contact");
            Assert.AreEqual(tableRefs[0].tableAlias, "ec");
            Assert.AreEqual(tableRefs[1].table.Name, "employee");
            Assert.AreEqual(tableRefs[1].tableAlias, "e");
            Assert.AreEqual(tableRefs[2].table.Name, "department");
            Assert.AreEqual(tableRefs[2].tableAlias, "d");

            var selectStatement = new SelectStatement(database, "SELECT * FROM employee_contact WHERE contact_id=@contactId ORDER BY seq");

            Assert.AreEqual("*", selectStatement.selectClause);
            Assert.AreEqual("employee_contact", selectStatement.fromClause);
            Assert.AreEqual("contact_id=@contactId", selectStatement.whereClause);
            Assert.AreEqual("seq", selectStatement.orderByClause);

            var selectStatement2 = new SelectStatement(database, @"SELECT ec.id 
                FROM employee_contact ec 
                    INNER JOIN employee e ON ec.employee_id=e.id 
                WHERE contact_id=@contactId ORDER BY seq");

            Assert.AreEqual("ec.id", selectStatement2.selectClause);
        }
コード例 #2
0
ファイル: DynamicView.cs プロジェクト: inrg/butterfly-db
 public bool TryGetDynamicStatementFromRef(string tableName, out StatementFromRef dynamicStatementFromRef) => this.dynamicStatementFromRefByTableName.TryGetValue(tableName, out dynamicStatementFromRef);