Em que a camada de chamadas linq-SQL fazer como SubmitChanges (), InsertOnSubmit () etc.
-
19-09-2019 - |
Pergunta
Qual camada é a melhor camada para fazer chamadas LINQ SQL como SubmitChanges (), InsertOnSubmit () etc.
Por exemplo, digamos que eu tenha duas tabelas pai e filho. tabela filho tem chave estrangeira no pai (tabela filho tem coluna ParentId). Eu quero inserir objeto pai e objetos filho no db.
Usando o LINQ-sql, eu posso fazer isso.
Parent parent = new Parent();
Child child1 = new Child();
Child child2 = new Child();
//assign values to parent data members
//...
parent.Childs.Add(child1);
parent.Childs.Add(child2);
using (DataContext db = new DataContext())
{
db.Parents.InsertOnSubmit(parent);
db.SubmitOnChanges();
}
Am I misturar código da camada de apresentação com camada de acesso a dados? Se assim for, como posso fazê-lo com um objeto da camada de negócios entre os dois?
Por favor me avise. Obrigado.
Solução
Ter o acesso a dados ali dentro da camada de apresentação não é provavelmente a melhor maneira de fazê-lo.
Você poderia implementar uma classe escritor que tem métodos que acessam o DataContext.
Parent parent = new Parent();
Child child1 = new Child();
Child child2 = new Child();
//assign values to parent data members
//...
parent.Childs.Add(child1);
parent.Childs.Add(child2);
using (var parentWriter = new ParentWriter())
{
parentWriter.Insert(parent)
}
Em seguida, na classe wrapper
public class ParentWriter : IDisposable
{
private DataContext _dc;
public ParentWriter()
{
_dc = new DataContext();
}
public void Insert(Parent parent)
{
_dc.Parents.InsertOnSubmit(parent);
_dc.SubmitOnChanges();
}
//IDisposable Members
//...
}
Este é um bom exemplo simplificado e não foi testado. Eu tenho usado um projeto similar em um projeto recente onde temos Escritor específica e leitor de classes que dividem o acesso a dados dependendo do que estamos fazendo com os dados.
Outras dicas
Nós construímos um quadro full-blown n-tier usando L2S. Temos uma camada camada UI distinta, camada de lógica de negócios e acesso a dados. Nossas entidades são passados ??a partir da IU para a camada de negócios para processos de negócios e de validação, e depois repassado para o DAL para as operações de banco de dados. O contrário também é verdade. Um cliente faz um pedido de uma entidade que passa pela BLL, através da DAL, e de volta para o cliente.