O Entity Framework está pronto para produção? [fechadas]

10

Estou pesquisando no Entity Framework um novo projeto que participarei e, como parte de minha pesquisa, pergunto a alguns profissionais do setor se ele está estável e pronto para a implementação no mundo real.

Na corrida é:

  • EF
  • NHibernate
  • DevExpress XPO

Eu já tenho muita experiência com XPO, mas não estou particularmente feliz com isso.

Steven Evers
fonte

Respostas:

8

Sim, mas com algumas ressalvas:

  • É totalmente suportado pela Microsoft e tem uma comunidade em crescimento - mas, sendo mais novo que seu concorrente mais próximo, o nHibernate, ainda não tem uma comunidade tão madura.

  • Além de ter uma comunidade menos madura, haverá momentos em que um recurso está disponível no EF4, mas pouco documentado; ou EF4 lançará exceções com as quais o Google não pode ajudá-lo.

  • Ele possui todos os recursos quando usado como a Microsoft pretende, mas, na minha experiência, pode ser bastante difícil adaptar a um sistema existente. Idealmente, você o usará em um cenário greenfield com uma pilha 100% da Microsoft. Certamente é flexível o suficiente para se misturar com outros sistemas, mas isso aumenta substancialmente a dificuldade.

No entanto, para reiterar o ponto principal, ele é completo e estável o suficiente para uso na produção.


Uma coisa importante a ser destacada, que parece óbvia, mas geralmente é negligenciada até causar dor, é que um ORM trabalha para mapear do paradigma relacional para o paradigma OO. Se um desses níveis não seguir as regras de seu respectivo paradigma, você se sentirá mais magoado.

Isso pode acontecer nos dois sentidos - se você conhece bem o paradigma relacional / baseado em conjuntos de SQL e OOP, o ORM permitirá que os dois se misturem como manteiga. Se o seu banco de dados parece que ele quer ser OO e o código OO parece que ele quer ser baseado em registros, então YMMV.

STW
fonte
+1: Obrigado pela informação. Felizmente, o projeto é um greenfield quase inteiramente na pilha do .NET (ainda debatendo entre o mysql e o sql server), e vou modelar o domínio primeiro (e, com sorte, gerar a estrutura da tabela)
Steven Evers
@SnOrfus: FWIW Comecei a usar o EF recentemente sobre o MySQL, e realmente gostei.
Eric King
5

Temos usado a EF em várias aplicações de produção. Também temos o NHibernate em vários aplicativos de produção. O comentário da STW de que a EF funciona melhor "quando usado como a Microsoft pretende" é certamente verdadeiro. Também é verdade que o NHibernate funciona melhor quando usado seguindo os padrões pretendidos pela equipe do NHibernate. Não tenho conhecimento ou experiência com XPO.

Não me arrependo de colocar o NHibernate em produção.
Não me arrependo de colocar o Entity Framework em produção.

Um dos fatores determinantes para o uso da EF foi a integração com o LINQ. Eu sei que o NHibernate também trabalhou muito com o LINQ, mas ainda não teve tempo de investigar isso.

Jim Reineri
fonte
Trabalhando com ambos é uma ótima maneira de aprender como trabalhar com ambos. É um pouco como aprender VB.NET e C # - você faz perguntas quando vê diferenças, e essas perguntas aprimoram bastante sua compreensão no final.
STW
3

Estamos usando o EF4.1 com a abordagem Code First em nosso projeto da Web e, conforme declarado anteriormente, mantendo o uso conforme pretendido pela Microsoft, evitará muitos problemas.

Pode-se notar, no entanto, que o sistema ainda não está maduro e digo isso porque:

  1. O comportamento ainda muda muito (comparado de CTP5 a 4.1)
  2. O gerador LINQ to Entities só pode manipular tipos básicos (Int, String, o lote)
  3. Algumas coisas não funcionaram totalmente intuitivamente quando você tenta mesclar os conjuntos de dados existentes
    1. Não permite que você crie apenas definições de tabela para determinados dbsets
    2. O mapeamento de campos como data / hora requer pesquisa no Google.
  4. Veja outros problemas conhecidos
Alessandro Vermeulen
fonte
2

Na verdade, eu não usei a pilha cheia, mas a usamos em partes em nosso produto e parece bastante madura, embora precisássemos adaptar algumas peças para nossas necessidades.

matiash
fonte
0

Eu acho que sim. Estou usando o CTP (código-primeiro EF4) para desenvolver um aplicativo da web com vários inquilinos.

Jakub Konecki
fonte
+1 - Sim, já treinei em uma equipe que o utilizou intensivamente em um projeto empresarial muito grande e funcionou muito bem. Isso foi com a primeira versão, não a mais recente. Portanto, tenho certeza de que é 100% seguro usar a versão mais recente.
Não sei como você pode ter 100% de certeza de qualquer software que não foi executado em um ambiente de produção.
Jeremy
-1

Eu acho / espero que sim ... Estou iniciando um projeto com o EF 4 e a nova abordagem Model-First ...

Pelo que eu vi, o EF 4 é muito robusto e possui recursos completos que a primeira versão ... Eu diria que vá em frente, eu sei que vou :)

sebagomez
fonte
-1

Sim, porém, você deve alocar recursos para atualizar e testar novamente seu aplicativo quando as atualizações forem lançadas (como em qualquer outra estrutura).

Casper
fonte