[TestMethod]
public void TesteRepositorioDerivado()
{
using (var uow = new UnitOfWork(new MyEntities()))
{
//instanciando o repositório de endereços
IRepositorio<Endereco> repEnderecos = new Repositorio<Endereco>(uow);
//instanciando o repositório derivado de pessoas
IRepositorio<Pessoa> repPessoas = new RepositorioPessoas(uow);
//cria uma nova pessoa com a data atual já preenchida
var pessoa = repPessoas.CreateNew();
pessoa.Nome = "Fulano";
//cria uma nova entidade Endereco e associa com a pessoa
var end = repEnderecos.CreateNew();
end.Rua = "Teste";
end.Pessoas.Add(pessoa);
//persiste todos os repositórios
uow.Commit();
//Faz a asserção checando se a pessoa possui endereços relacionados
Assert.IsTrue(pessoa.Enderecos.Count > 0);
}
}
[TestMethod]
public void TesteOperacoesCrud()
{
using (var uow = new UnitOfWork(new MyEntities()))
{
var repPessoas = new RepositorioPessoas(uow);
//exclui uma pessoa com id = 1
var pessoa = repPessoas.GetEntityByKey(1);
if (pessoa != null)
repPessoas.RemoveEntity(pessoa);
uow.Commit();
//exclui todos os enderecos de uma pessoa com id = 2
var repEnderecos = new Repositorio<Endereco>(uow);
var pessoa2 = repPessoas.GetEntityByKey(2);
if (pessoa2 != null)
{
var enderecosPessoa2 = repEnderecos.GetAll(end => end.Pessoas.Any(p => p == pessoa2));
foreach (var endereco in enderecosPessoa2)
{
repEnderecos.RemoveEntity(endereco);
}
uow.Commit();
}
}
}