Página Inicial > Uncategorized > Entity Framework 4: CodeOnly e POCO

Entity Framework 4: CodeOnly e POCO

Fala galera, este post é resultado do meu estudo sobre as features do EFv4. A idéia deste post é mostrar o básico do CodeOnly e uso de POCOs no EF, este post foi baseado no exemplo feito pelo time do ADO.NET. Para rodar o código é necessário instalar o CTP2 que pode ser baixado aqui.

1-Inicialmente vamos criar uma solution vazia no visual studio.

2-Adicionar uma projeto(classLibrary) chamado Classes, neste projeto vamos colocar nossos POCOs

3- No projeto Classes adicionar uma classe chamada pessoa com o código abaixo

   1: public class Person

   2:    {

   3:        public int PersonID { get; set; }

   4:        public String Name { get; set; }

   5:        public int Age { get; set; }

   6:        public String Email { get; set; }

   7:    }

4- Agora vamos criar um novo projeto(classLibrary) chamado Model, neste projeto vamos colocar as configurações do EF

5- Vamos adicionar nestr projeto referências para a dll  Microsoft.Data.Entity.ctp e System.Data.Entity

6- Agora vamos adicionar uma classe chamada PersonConfiguration, esta classe será responsável pelo mapeamento do nosso POCO para o banco de dados.

   1: public class PersonConfiguration : EntityConfiguration<Person>

   2: {

   3:     public PersonConfiguration()

   4:     {

   5:         //Estamos indicando que PersoID é Identity

   6:         Property(p => p.PersonID).IsIdentity();

   7:

   8:         //Estamos indicando que o nome é NOT NULL

   9:         Property(p => p.Name).IsRequired();

  10:     }

  11: }

este arquivo vai existir para cada classe POCO do projeto.

7-Vamos criar uma classe chamada Model, esta classe será o nosso DataContext.

   1: public class SimpleCodeOnlyExampleModel : ObjectContext

   2:     {

   3:         public SimpleCodeOnlyExampleModel(EntityConnection entityConnection)

   4:             : base(entityConnection)

   5:         {

   6:             DefaultContainerName = "SimpleCodeOnlyExampleModel";

   7:         }

   8:

   9:         //IObject é uma interface que que possui os métodos necessários para o CRUD

  10:         public IObjectSet<Person> People

  11:         {

  12:             get { return base.CreateObjectSet<Person>(); }

  13:         }

  14:     }

8- Agora vamos criar uma factory para encapsular a criação do DataContext e tudo pronto

   1: public class DataContext

   2: {

   3:

   4:     public static SimpleCodeOnlyExampleModel FactoryDataContext()

   5:     {

   6:         String connection = @"Data Source=.\SQLEXPRESS;Initial Catalog=SimpleCodeOnlyExampleModel;Integrated Security=SSPI;";

   7:         var builder = new ContextBuilder<SimpleCodeOnlyExampleModel>();

   8:

   9:         //Adicionamos todas as configurações

  10:         builder.Configurations.Add(new PersonConfiguration());

  11:         return builder.Create(new SqlConnection(connection));

  12:     }

  13:

  14:     /// <summary>

  15:     /// Este método cria o database de acordo com o mapeamento realizado nas classes

  16:     /// de configuração do POCO

  17:     /// </summary>

  18:     public static void CreateDataBase()

  19:     {

  20:         var ctx = FactoryDataContext();

  21:         if (!ctx.DatabaseExists())

  22:             ctx.CreateDatabase();

  23:     }

  24: }

Tudo pronto! agora vamos ao nosso exemplo. Podemos criar um projeto chamado ConsoleApp(Console Application) para rodar nosso exemplo.

   1: public static void Main()

   2: {

   3:     //este método cria um database

   4:     DataContext.CreateDataBase();

   5:

   6:     //Cadastradando uma pessoa

   7:     Person p = new Person();

   8:     p.Name = "Higor";

   9:     p.Age = 20;

  10:     p.Email = "higor.crr@gmail.com";

  11:     var ctx = DataContext.FactoryDataContext();

  12:

  13:     ctx.People.AddObject(p);

  14:     ctx.SaveChanges();

  15:

  16:     //lendo todas as pessoas

  17:     var people = ctx.People.ToList();

  18:

  19:

  20: }

Após rodar o código podemos observar que um database foi criado no SQLServerExpress e que temos dados e tudo.

Estou achando o trabalho do pessoal muito bom, e vocês? vou abordar questões mais complexas nos próximos posts. Vou adiantar que o proximo assunto será lazyLoading e tipos de dados complexos.

fonte:http://higorcesar.com.br/Download/SimpleCodeOnlySample.rar

Author: higor.cesar Categories: Uncategorized Tags:
  1. Nenhum comentário ainda.
  1. Nenhum trackback ainda.