Exemple #1
0
        public void SaveWithSelfOuterJoin()
        {
            var p1 = new PersonPair(1, "織田信長", new DateTime(1534, 6, 23), 2, "羽柴秀吉", new DateTime(2018, 4, 7));

            using (var t1 = _db.CreateTran()) {
                Assert.That(t1.Save(p1), Is.EqualTo(1));
                Assert.That(t1.LastExecutedSql,
                            Is.EqualTo("UPDATE Persons SET name=" + N + "'羽柴秀吉',birthDay='2018-04-07' WHERE id=2"));

                var record = new PersonPair();
                record.SuccessorName = "羽柴秀吉";
                var query = new Query <PersonPair>();
                query.And(val.of("Id") == 1);
                Assert.That(t1.Call("save", record, query), Is.EqualTo(1));
                Assert.That(t1.LastExecutedSql,
                            Is.EqualTo("UPDATE Persons SET name=" + N + "'羽柴秀吉',birthDay=NULL WHERE " +
                                       "EXISTS(SELECT 1 FROM (SELECT P1.id AS Id,P1.name AS Name," +
                                       "P1.birthDay AS BirthDay,P2_.id AS" + Environment.NewLine +
                                       "SuccessorId,P2_.name AS SuccessorName,P2_.birthDay AS SuccessorBirthDay " +
                                       "FROM Persons P1 LEFT JOIN Persons P2_ ON P1.successor=P2_.id)V0_ " +
                                       "WHERE" + Environment.NewLine + "Id=1 AND V0_.SuccessorId=Persons.id)"));

                var criteria = new PersonPair();
                criteria.Id            = 1;
                criteria.SuccessorName = "豊臣秀吉";
                Assert.That(t1.Save(criteria), Is.EqualTo(1));
                Assert.That(t1.LastExecutedSql,
                            Is.EqualTo("UPDATE Persons SET name=" + N + "'豊臣秀吉',birthDay=NULL WHERE " +
                                       "EXISTS(SELECT 1 FROM (SELECT P1.id AS Id,P1.name AS Name," +
                                       "P1.birthDay AS BirthDay,P2_.id AS" + Environment.NewLine +
                                       "SuccessorId,P2_.name AS SuccessorName,P2_.birthDay AS SuccessorBirthDay " +
                                       "FROM Persons P1 LEFT JOIN Persons P2_ ON P1.successor=P2_.id)V0_ " +
                                       "WHERE" + Environment.NewLine + "Id=1 AND V0_.SuccessorId=Persons.id)"));
            }
        }
Exemple #2
0
        public void DeleteWithSelfOuterJoin()
        {
            var p1 = new PersonPair(1, "織田信長", new DateTime(1534, 6, 23), 2, "羽柴秀吉", new DateTime(2018, 4, 7));

            using (var t1 = _db.CreateTran()) {
                Assert.That(t1.Save(p1), Is.EqualTo(1));
                Assert.That(t1.LastExecutedSql,
                            Is.EqualTo("UPDATE Persons SET name=" + N + "'羽柴秀吉',birthDay='2018-04-07' WHERE id=2"));

                var criteria = new PersonPair();
                criteria.SuccessorName = "羽柴秀吉";
                Assert.That(t1.Delete(criteria), Is.EqualTo(1));
                Assert.That(t1.LastExecutedSql,
                            Is.EqualTo("DELETE FROM Persons WHERE name=" + N + "'羽柴秀吉'"));
            }
        }
Exemple #3
0
    public override bool Equals(object obj)
    {
        if (!(obj is PersonPair))
        {
            return(false);
        }
        PersonPair personPair = (PersonPair)obj;

        //HasValue=FalseなNull許容型同士を比較するとnullになるので、Trueになるように一致条件を工夫した
        if (this.Id == personPair.Id)
        {
            return(true);
        }
        else
        {
            return(false);
        }
    }
Exemple #4
0
        public void FindWithSelfOuterJoin()
        {
            var p1 = new PersonPair(1, "織田信長", new DateTime(1534, 6, 23), 2, "羽柴秀吉", new DateTime(2018, 4, 7));

            using (var t1 = _db.CreateTran()) {
                Assert.That(t1.Save(p1), Is.EqualTo(1));
                Assert.That(t1.LastExecutedSql,
                            Is.EqualTo("UPDATE Persons SET name=" + N + "'羽柴秀吉',birthDay='2018-04-07' WHERE id=2"));

                var query = new Query <PersonPair>();
                query.And(val.of("Id") == 1);
                Assert.That(t1.FindOne(query), Is.EqualTo(p1));
                Assert.That(t1.LastExecutedSql,
                            Is.EqualTo("SELECT * FROM (SELECT P1.id AS Id,P1.name AS Name,P1.birthDay AS " +
                                       "BirthDay,P2.id AS SuccessorId,P2.name AS SuccessorName,P2.birthDay AS" +
                                       Environment.NewLine + "SuccessorBirthDay FROM Persons P1 LEFT JOIN " +
                                       "Persons P2 ON P1.successor=P2.id)V0_ WHERE Id=1"));
            }
        }