public void Save(Module4.Contact contact) { using var txScope = new TransactionScope(); if (contact.IsNew) { this.Add(contact); } else { this.Update(contact); } foreach (var addr in contact.Addresses.Where(a => !a.IsDeleted)) { addr.ContactId = contact.Id; if (addr.IsNew) { this.Add(addr); } else { this.Update(addr); } } foreach (var addr in contact.Addresses.Where(a => a.IsDeleted)) { this.db.Execute("DELETE FROM Addresses WHERE Id = @Id", new { addr.Id }); } txScope.Complete(); }
static int Insert_should_assign_identity_to_new_entity() { // arrange Module4.IContactRepository repository = CreateRepository(); var contact = new Module4.Contact { FirstName = "Joe", LastName = "Blow", Email = "*****@*****.**", Company = "Microsoft", Title = "Developer" }; var address = new Module4.Address { AddressType = "Home", StreetAddress = "123 Main Street", City = "Baltimore", StateId = 1, PostalCode = "22222" }; contact.Addresses.Add(address); // act //repository.Add(contact); repository.Save(contact); // assert Debug.Assert(contact.Id != 0); Console.WriteLine("*** Contact Inserted ***"); Console.WriteLine($"New ID: {contact.Id}"); return(contact.Id); }
public Module4.Contact Add(Module4.Contact contact) { var sql = "INSERT INTO Contacts (FirstName, LastName, Email, Company, Title) VALUES(@FirstName, @LastName, @Email, @Company, @Title); " + "SELECT CAST(SCOPE_IDENTITY() as int)"; var id = db.Query <int>(sql, contact).Single(); contact.Id = id; return(contact); }
public Module4.Contact Update(Module4.Contact contact) { var sql = "UPDATE Contacts " + "SET FirstName = @FirstName, " + " LastName = @LastName, " + " Email = @Email, " + " Company = @Company, " + " Title = @Title " + "WHERE Id = @Id"; this.db.Execute(sql, contact); return(contact); }