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)")); } }
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 + "'羽柴秀吉'")); } }
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); } }
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")); } }