EntityFramework-Lendo seu banco de dados com o Visual Studio 2013 Update 2

Olá pessoal,

Há algum tempo atrás eu fiz um post falando sobre como aproveitar seu banco de dados existente com o EntityFramework PowerTools, mas o modelo do PowerTools não permite escolher as tabelas ou views que você quer ler, e ás vezes isto é bem útil.

Com o lançamento do Update 2 do Visual Studio 2013 e também do EntityFramework 6.1, foi adicionada uma nova opção nas fontes de dados, que agora permite também fazer engenharia reversa com CodeFirst escolhendo quais tabelas e views serão lidas, a exemplo do que já era possível com o EntityFramework Designer.

Para demonstrar isto, vamos criar um novo projeto do tipo Console no Visual Studio 2013:

SNAGHTMLa64a79f

Agora vamos fazer a engenharia reversa, mas utilizando o novo recurso do Visual Studio 2013. Para isto, no seu projeto clique com o botão direito do mouse na solution e depois vá em Add/New Item:

image

Agora vamos adicionar um ADO.NET Entity Data Mode:

SNAGHTMLa676ebe

E veja que agora existe uma nova opção chamada “Code First from database” e com ela iremos ler um banco de dados já existente e criar todo o código para o CodeFirst.

SNAGHTMLa69ebd4

Vamos então escolher esta opção e colocar a conexão para o nosso banco de dados existente: (no meu exemplo estou usando o banco da Microsoft chamado Northwind)

SNAGHTMLa69538c

Agora você pode escolher as tabelas e views que quiser para o seu projeto do CodeFirst:

SNAGHTMLa6b3694

Feito isto, todas as classe serão geradas no CodeFirst, mas com uma grande diferença em relação ao PowerTools: as informações de mapeamento são geradas como DataAnnotations ao invés de FluentApi. Veja o exemplo da classe Products:

   1: public partial class Products

   2:     {

   3:         [Key]

   4:         public int ProductID { get; set; }

   5:

   6:         [Required]

   7:         [StringLength(40)]

   8:         public string ProductName { get; set; }

   9:

  10:         public int? SupplierID { get; set; }

  11:

  12:         public int? CategoryID { get; set; }

  13:

  14:         [StringLength(20)]

  15:         public string QuantityPerUnit { get; set; }

  16:

  17:         [Column(TypeName = "money")]

  18:         public decimal? UnitPrice { get; set; }

  19:

  20:         public short? UnitsInStock { get; set; }

  21:

  22:         public short? UnitsOnOrder { get; set; }

  23:

  24:         public short? ReorderLevel { get; set; }

  25:

  26:         public bool Discontinued { get; set; }

  27:

  28:         public virtual Categories Categories { get; set; }

  29:     }

Veja que a classe foi gerada e o DataAnnotations foi criado.

Agora é só utilizar o EntityFramework CodeFirst!

Abraços e até a próxima,

Carlos dos Santos.

2 Comments

  1. Fala Carlos, muto bom o post.
    Estou utilizando dessa maneira desde a VS Summit desse ano.
    O mais interessante de tudo, é poder utilizar como aprendizado para o code first.

    Parabéns.

Leave a Reply

In an effort to prevent automatic filling, you should perform a task displayed below.


WP-SpamFree by Pole Position Marketing