public void SaveWith2Tables() { var s1 = new Schedule2Tables(1 , "織田信長" , new DateTime(1534, 6, 23) , 160.34M , 50M , false , "天下布武" , new DateTime(1571, 9, 30, 00, 00, 0) , "叡山焼き討ち"); using (var t1 = _db.CreateTran()) { Assert.That(t1.Save(s1), Is.EqualTo(1)); Assert.That(t1.LastExecutedSql, Is.EqualTo("INSERT INTO Schedules(id,date,subject)" + " VALUES(1,'1571-09-30'," + N + "'叡山焼き討ち')")); Assert.That(t1.Delete(s1), Is.EqualTo(1)); /* UPDATE/DELETE文のFROM句が記述できるDBMSは限られているため、WHERE句の付加においては * FROM句がないという前提で処理をしている*/ Assert.That(t1.LastExecutedSql, Is.EqualTo("DELETE FROM Schedules FROM Persons " + "WHERE Schedules.id=1 AND Schedules.date='1571-09-30' AND Schedules.subject=" + N + "'叡山焼き討ち' AND " + "EXISTS(SELECT 1 FROM" + Environment.NewLine + "(SELECT P.id AS Id,P.name AS Name," + "P.birthDay AS BirthDay,P.height AS Height,P.weight AS Weight,P.isDaimyou AS IsDaimyou," + "P.remarks AS Remarks,S_." + Environment.NewLine + "date AS \"Date\",S_.subject AS Subject," + "S_.id AS S__id_ FROM Persons P LEFT JOIN Schedules S_ ON P.id=S_.id)V0_ " + "WHERE Name=" + N + "'織田信長' AND BirthDay=" + Environment.NewLine + "'1534-06-23' AND Height=160.34 AND " + "Weight=50 AND IsDaimyou=0 AND Remarks=" + N + "'天下布武' AND V0_.Date=Schedules.date AND V0_.S__id_=Schedules.id)")); } }
public override bool Equals(object obj) { if (!(obj is Schedule2Tables)) { return(false); } Schedule2Tables schedule = (Schedule2Tables)obj; //HasValue=FalseなNull許容型同士を比較するとnullになるので、Trueになるように一致条件を工夫した if (this.Id == schedule.Id) { return(true); } else { return(false); } }