private bool LoadEntityWithId(ITransaction transaction, ConstraintTestDeleteRestrictRootEntity loadEntity, int id) { bool loaded = false; IDbCommand cmd = transaction.CreateCommand(); cmd.CommandText = "select * from constraint_test_root where id_col = ?"; IDbDataParameter parameter = cmd.CreateParameter(); cmd.Parameters.Add(parameter); parameter.DbType = DbType.Int32; parameter.Direction = ParameterDirection.Input; parameter.Value = id; IDataReader dataReader = cmd.ExecuteReader(); if (dataReader.Read()) { loadEntity.Retrieve(dataReader, transaction); loaded = true; } return(loaded); }
public void ConstraintValidation_DeleteRootWithOneToManyChild_WithRestrictConstraint_ShouldThrowException() { IDbConnection connection = SetupTables(); ITransaction transaction = CreateTransaction(connection); int id = 45; ConstraintTestDeleteRestrictRootEntity entity = new ConstraintTestDeleteRestrictRootEntity(); entity.IdCol = id; entity.Name = "Org-Name"; entity.Persist(transaction); transaction.Commit(); transaction = CreateTransaction(connection); ConstraintTestOne2ManyEntity one2ManyEntity = new ConstraintTestOne2ManyEntity(); one2ManyEntity.IdCol = id; one2ManyEntity.Name = "Child-Org-Name"; one2ManyEntity.Persist(transaction); transaction.Commit(); transaction = CreateTransaction(connection); ConstraintTestDeleteRestrictRootEntity loadedEntity = new ConstraintTestDeleteRestrictRootEntity(); LoadEntityWithId(transaction, loadedEntity, id); loadedEntity.Status = EntityStatus.Deleted; Assert.Throws <PersistException>(() => loadedEntity.Persist(transaction)); transaction.Commit(); connection.Close(); }