Camada de Acesso a Dados (DAL), Linq, Entity Framework, SQL
02/12/2008
0
Boas.
Estamos desenvolvendo um projeto utilizando C#, WPF, LINQ e Entity Framework. Dividimos o projeto em 3. Um projeto WPF com a interface, uma Class Library com o Entity Framework e uma Class Library com o acesso a dados (DAL) utilizando LINQ.
Pergunta: Estou certo em dividir o projeto em 3 projetos dessa maneira?
Eu tenho o seguinte código para abrir a conexão com a minha base de dados MS-SQL Server 2005:
private static SisWebClasses.siswebEntities dm = new SisWebClasses.siswebEntities();
Pergunta: Onde eu devo abrir essa conexão? Eu devo abri-la apenas no Projeto DAL? Como eu faço isso apenas uma vez enquanto a aplicação principal estiver rodando?
Ao executar o projeto, eu abro uma tela e exibo os dados num DataGrid da Xceed:
dgSetor.ItemsSource = SetorDAL.SetorSelecionarTotal();
E tenho o comando LINQ que retorna os Dados:
public static System.Linq.IQueryable SetorSelecionarTotal()
{
return (from c in dm.tbSetor
select new { c.IdSetor, c.Setor, c.Situacao });
}
Até aqui tudo ocorre bem. A seleção é realizada quantas vezes eu entrar e sair da tela sem erros. Quando vou salvar uma alteração no entanto ocorre o seguinte erro:
An error occurred while starting a transaction on the provider connection. See the inner exception for details.
{´New transaction is not allowed because there are other threads running in the session.´}
O método da Alteração:
public static void SetorAlterar(int prIdSelecionado, string prSetor, bool prSituacao)
{
tbSetorTabela = (from c in dm.tbSetor
where c.IdSetor == prIdSelecionado
select c).First();
tbSetorTabela.Setor = prSetor;
tbSetorTabela.Situacao = prSituacao;
dm.SaveChanges();
}
Alguém tem idéia de como resolvo tudo isso? rsrs
Obrigado desde já pela ajuda!
Leonardo.
Estamos desenvolvendo um projeto utilizando C#, WPF, LINQ e Entity Framework. Dividimos o projeto em 3. Um projeto WPF com a interface, uma Class Library com o Entity Framework e uma Class Library com o acesso a dados (DAL) utilizando LINQ.
Pergunta: Estou certo em dividir o projeto em 3 projetos dessa maneira?
Eu tenho o seguinte código para abrir a conexão com a minha base de dados MS-SQL Server 2005:
private static SisWebClasses.siswebEntities dm = new SisWebClasses.siswebEntities();
Pergunta: Onde eu devo abrir essa conexão? Eu devo abri-la apenas no Projeto DAL? Como eu faço isso apenas uma vez enquanto a aplicação principal estiver rodando?
Ao executar o projeto, eu abro uma tela e exibo os dados num DataGrid da Xceed:
dgSetor.ItemsSource = SetorDAL.SetorSelecionarTotal();
E tenho o comando LINQ que retorna os Dados:
public static System.Linq.IQueryable SetorSelecionarTotal()
{
return (from c in dm.tbSetor
select new { c.IdSetor, c.Setor, c.Situacao });
}
Até aqui tudo ocorre bem. A seleção é realizada quantas vezes eu entrar e sair da tela sem erros. Quando vou salvar uma alteração no entanto ocorre o seguinte erro:
An error occurred while starting a transaction on the provider connection. See the inner exception for details.
{´New transaction is not allowed because there are other threads running in the session.´}
O método da Alteração:
public static void SetorAlterar(int prIdSelecionado, string prSetor, bool prSituacao)
{
tbSetorTabela = (from c in dm.tbSetor
where c.IdSetor == prIdSelecionado
select c).First();
tbSetorTabela.Setor = prSetor;
tbSetorTabela.Situacao = prSituacao;
dm.SaveChanges();
}
Alguém tem idéia de como resolvo tudo isso? rsrs
Obrigado desde já pela ajuda!
Leonardo.
Anonymous
Curtir tópico
+ 0
Responder
Posts
15/10/2009
Anonymous
Leonardo, eu tb estava com uma duvida parecida e achei a solução aqui mesmo num artigo https://www.devmedia.com.br/articles/viewcomp.asp?comp=9297, mas tive que comprar, Valeu a pena.
Abraços
Abraços
Responder
Clique aqui para fazer login e interagir na Comunidade :)