gostaria de saber se alguém sabe como implementar o uso do Entity Framework Code-First em ASP.NET de forma que funcione semelhante ao Hibernate, pois preciso que minha aplicação ASP.NET feita no padrão MVC 3 possua suporte a vários tipos de banco de dados, tais como, SQL Server, MySQL, Oracle, Postgres entre outros.
Estou iniciando com o EF Code First, mas como pude perceber, ele possui uma certa semelhança no quesito persistência e manipulação de dados com o Hibernate, que usa por exemplo, o EntityManager, entre outros, para gerenciar o acesso e a manipulação de dados. Minha dúvida é a seguinte, preciso fazer com que minha aplicação suporte conexões com múltiplos bancos de dados (não ao mesmo tempo), e.g. no Hibernate, posso trocar o banco de dados (grosseiramente falando) somente trocando algumas configurações no web.xml e apontar para o banco de dados que eu necessito, ou seja, posso estar trabalhando com um banco de dados Postgres, e caso necessite mudar para Oracle, somente ajusto as configurações no web.xml e posso continuar usando a minha aplicação normalmente. Seria possível ter um comportamento semelhante a esse no EF Code First?
P
pcsoriano
Já tinha achado esse tuto no google antes porém não consegui abstrair o que necessitava dele
A
AbelBueno
Sim, perfeitamente possível.
A configuração do banco de dados pode ser externa ao código.
Ficaria no web.config /app.config da sua aplicação.
P
pcsoriano
Sim, perfeitamente possível.
A configuração do banco de dados pode ser externa ao código.
Ficaria no web.config /app.config da sua aplicação.
Ok, perfeito. De acordo com minhas pesquisas, pude perceber que essa configuração é possível, adicionando as tags de ConnectionString necessárias no web.config, correto?
Agora, tenho a seguinte situação; preciso setar a conexão com um banco de dados através de um arquivo XML lido em tempo de execução, neste arquivo terá todas as informações pertinentes a conexão com o banco de dados (string de conexão, entre outras), a aplicação deverá ler esse XML e realizar a conexão com o banco de dados especificado, que pode ser Oracle, Postgres, SQLServer entre outros.
Estou fazendo estes testes em cima da aplicação de exemplo disponibilizada em http://www.asp.net/mvc/tutorials/mvc-music-store/mvc-music-store-part-1, o banco utilizado é um banco local próprio para desenvolvimento e testes. Obtive sucesso ao conectar com uma base SQLServer. Abaixo segue como está a classe agora:
Utilizando este código, posso ler do arquivo XML a string de conexão e setando-a obtive a conexão com o banco SQLServer.
Porém o que não estou tendo sucesso é ao tentar conectar com bancos que não sejam da “família Microsoft”, tais como Postgres, no qual estou tentando agora.
Debugando minha aplicação pude perceber o porque de somente setar a string de conexão para uma string de conexão Postgres não funcionar:
O DataSource é SQLExpress, e como estou utilizando uma string de conexão Postgres a mesma não funciona.
N
Nicolas_Fernandes
Sim, perfeitamente possível.
A configuração do banco de dados pode ser externa ao código.
Ficaria no web.config /app.config da sua aplicação.
Ok, perfeito. De acordo com minhas pesquisas, pude perceber que essa configuração é possível, adicionando as tags de ConnectionString necessárias no web.config, correto?
Agora, tenho a seguinte situação; preciso setar a conexão com um banco de dados através de um arquivo XML lido em tempo de execução, neste arquivo terá todas as informações pertinentes a conexão com o banco de dados (string de conexão, entre outras), a aplicação deverá ler esse XML e realizar a conexão com o banco de dados especificado, que pode ser Oracle, Postgres, SQLServer entre outros.
Estou fazendo estes testes em cima da aplicação de exemplo disponibilizada em http://www.asp.net/mvc/tutorials/mvc-music-store/mvc-music-store-part-1, o banco utilizado é um banco local próprio para desenvolvimento e testes. Obtive sucesso ao conectar com uma base SQLServer. Abaixo segue como está a classe agora:
Utilizando este código, posso ler do arquivo XML a string de conexão e setando-a obtive a conexão com o banco SQLServer.
Porém o que não estou tendo sucesso é ao tentar conectar com bancos que não sejam da “família Microsoft”, tais como Postgres, no qual estou tentando agora.
Debugando minha aplicação pude perceber o porque de somente setar a string de conexão para uma string de conexão Postgres não funcionar:
O DataSource é SQLExpress, e como estou utilizando uma string de conexão Postgres a mesma não funciona.
Opa, pcsoriano, beleza?
A ideia do Entity Framework é ser nativo para o SQL Server. Por isso as conexões defaults são para este.
Agora, caso você queira se conectar no EF com outro banco de dados, vá até o site do desenvolvedor do mesmo e procure se há algum provider para reconhecimento do EF com esse banco de dados. O Oracle, por exemplo, disponibiliza o pacote ODAP.NET, o qual possibilita interagir o EF com o Oracle.
P
pcsoriano
Sim, perfeitamente possível.
A configuração do banco de dados pode ser externa ao código.
Ficaria no web.config /app.config da sua aplicação.
Ok, perfeito. De acordo com minhas pesquisas, pude perceber que essa configuração é possível, adicionando as tags de ConnectionString necessárias no web.config, correto?
Agora, tenho a seguinte situação; preciso setar a conexão com um banco de dados através de um arquivo XML lido em tempo de execução, neste arquivo terá todas as informações pertinentes a conexão com o banco de dados (string de conexão, entre outras), a aplicação deverá ler esse XML e realizar a conexão com o banco de dados especificado, que pode ser Oracle, Postgres, SQLServer entre outros.
Estou fazendo estes testes em cima da aplicação de exemplo disponibilizada em http://www.asp.net/mvc/tutorials/mvc-music-store/mvc-music-store-part-1, o banco utilizado é um banco local próprio para desenvolvimento e testes. Obtive sucesso ao conectar com uma base SQLServer. Abaixo segue como está a classe agora:
Utilizando este código, posso ler do arquivo XML a string de conexão e setando-a obtive a conexão com o banco SQLServer.
Porém o que não estou tendo sucesso é ao tentar conectar com bancos que não sejam da “família Microsoft”, tais como Postgres, no qual estou tentando agora.
Debugando minha aplicação pude perceber o porque de somente setar a string de conexão para uma string de conexão Postgres não funcionar:
O DataSource é SQLExpress, e como estou utilizando uma string de conexão Postgres a mesma não funciona.
Opa, pcsoriano, beleza?
A ideia do Entity Framework é ser nativo para o SQL Server. Por isso as conexões defaults são para este.
Agora, caso você queira se conectar no EF com outro banco de dados, vá até o site do desenvolvedor do mesmo e procure se há algum provider para reconhecimento do EF com esse banco de dados. O Oracle, por exemplo, disponibiliza o pacote ODAP.NET, o qual possibilita interagir o EF com o Oracle.