Entity Framework ASP.NET

8 respostas
P

Olá

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.

Obrigado.

8 Respostas

A

Mas em qual ponto exatamente é sua dúvida?

Você já sabe trabalhar com o EF Code First?

Em que sentido diz “funcione semelhante ao Hibernate” ?

W

Hey hey hey, google eh nosso rei! :slight_smile:

http://weblogs.asp.net/scottgu/archive/2010/07/16/code-first-development-with-entity-framework-4.aspx

Happy coding!

//Daniel

P

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

Já tinha achado esse tuto no google antes porém não consegui abstrair o que necessitava dele :confused:

A

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

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:

public class MusicStoreEntities : DbContext
    {
        public DbSet<Album> Albums { get; set; }
        public DbSet<Genre> Genres { get; set; }
        public DbSet<Artist> Artists { get; set; }
        public DbSet<Cart> Carts { get; set; }
        public DbSet<Order> Orders { get; set; }
        public DbSet<OrderDetail> OrderDetails { get; set; }

        public MusicStoreEntities()
        {
            string connectionString = null;

            XmlTextReader xml = new XmlTextReader(HttpContext.Current.Server.MapPath("~/DataConfig/connection.xml"));

            while (xml.Read())
            {
                if (xml.NodeType == XmlNodeType.Text)
                {
                    connectionString = Decriptografa(xml.Value);
                }
            }

            this.Database.Connection.ConnectionString = connectionString;            

        }

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:

http://www.mediafire.com/view/?wq3dczzu165blep (Imagem)

O DataSource é SQLExpress, e como estou utilizando uma string de conexão Postgres a mesma não funciona.

N

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:

public class MusicStoreEntities : DbContext
    {
        public DbSet<Album> Albums { get; set; }
        public DbSet<Genre> Genres { get; set; }
        public DbSet<Artist> Artists { get; set; }
        public DbSet<Cart> Carts { get; set; }
        public DbSet<Order> Orders { get; set; }
        public DbSet<OrderDetail> OrderDetails { get; set; }

        public MusicStoreEntities()
        {
            string connectionString = null;

            XmlTextReader xml = new XmlTextReader(HttpContext.Current.Server.MapPath("~/DataConfig/connection.xml"));

            while (xml.Read())
            {
                if (xml.NodeType == XmlNodeType.Text)
                {
                    connectionString = Decriptografa(xml.Value);
                }
            }

            this.Database.Connection.ConnectionString = connectionString;            

        }

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:

http://www.mediafire.com/view/?wq3dczzu165blep (Imagem)

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

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:

public class MusicStoreEntities : DbContext
    {
        public DbSet<Album> Albums { get; set; }
        public DbSet<Genre> Genres { get; set; }
        public DbSet<Artist> Artists { get; set; }
        public DbSet<Cart> Carts { get; set; }
        public DbSet<Order> Orders { get; set; }
        public DbSet<OrderDetail> OrderDetails { get; set; }

        public MusicStoreEntities()
        {
            string connectionString = null;

            XmlTextReader xml = new XmlTextReader(HttpContext.Current.Server.MapPath("~/DataConfig/connection.xml"));

            while (xml.Read())
            {
                if (xml.NodeType == XmlNodeType.Text)
                {
                    connectionString = Decriptografa(xml.Value);
                }
            }

            this.Database.Connection.ConnectionString = connectionString;            

        }

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:

http://www.mediafire.com/view/?wq3dczzu165blep (Imagem)

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.

Obrigado pelo esclarecimento!

Aproveitando a deixa fica o link para meu blog http://edupunksblog.blogspot.com.br/, aonde estarei postando a tradução do tutorial http://www.asp.net/mvc/tutorials/mvc-music-store/, entre outros assuntos!

Obrigado a todos!

Criado 9 de outubro de 2012
Ultima resposta 11 de out. de 2012
Respostas 8
Participantes 4