Olá pessoal,
Estava pesquisando na internet e vi no forum o seguinte exemplo:
| [Project] | <-- | [JobInProject] | --> | [Job] |
============= ================== =========
| ProjectID | | JobInProjectID | | JobID |
| | | ProjectID | | |
| | | JobID | | |
Quero deletar todos JobInProject relacionados a um Project
Pelo que pesquisei posso fazer de duas maneiras:
- Utilizando delete cascade
- Ou setando dessa maneira:
foreach (var item in project.JobInProjects)
{
db.Entry(item.Job).State = EntityState.Deleted;
}
Estou certo?
Minha segunda dúvida é a seguinte. Tenho um projetinho com o seguinte relacionamento:
Cliente possui zero ou muitos Pedidos
O teste que estou querendo fazer é o seguinte:
public void Alterar(int id)
{
cliente_tb cliente = base.SelecionarId(p => p.cliente_id == id);
cliente.pedido_tb.Clear();
base.Atualizar(cliente);
base.SalvarTodos();
}
Está ocorrendo esse erro:
The operation failed: The relationship could not be changed because one or more of the foreign-key properties is non-nullable. When a change is made to a relationship, the related foreign-key property is set to a null value. If the foreign-key does not support
null values, a new relationship must be defined, the foreign-key property must be assigned another non-null value, or the unrelated object must be deleted.
Minha classe Repositório está assim:
public void Atualizar(TEntity obj)
{
ctx.Entry(obj).State = EntityState.Modified;
}
public void SalvarTodos()
{
ctx.SaveChanges();
}
Para ele 'atualizar' o pedido eu preciso adicionar o objeto pedido_tb dentro da ctx.Entry?
ctx.Entry(obj_pedido_tb).State = EntityState.Modified;
Se tiver, existe uma outra forma automatica de se fazer? Onde eu passo um objeto e o entity se vira para saber o que tem que atualizar?
Grato