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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top