Entity Framework 4 – POCO Code Only
Na versão “beta” deste blog, fiz um post mostrando como utilizar o POCO (Plain Old CLR Object) e as novas funcionalidades disponíveis no Feature CTP 4 para ADO.Net Entity Framework. Porém resolvi reescrever o post para explicar melhor cada funcionalidade e ir aprofundando a cada post.
Antes de começar faça o download do CTP 4.
- Abra o Visual Studio 2010
- File –> New –> New Project
- Selecione “Windows” no menu à esquerda e depois “Console Application”
- Digite PocoEF4 como nome do projeto
Com a nossa solução criada, criaremos mais dois projetos para o domínio e a persistência.
- Com o botão direito do mouse clique em Add –> New Project
- Selecione “Class Library”
- Digite Dominio no nome do projeto.
- Repita os passos 1 e 2 e coloque o nome do projeto como Persistencia
Após adicionar os projetos sua solução deve parecer como na imagem abaixo:
Vamos então criar o nosso domínio com as classes POCO. No projeto domínio crie duas classes com os nomes Blog e Post conforme o código abaixo
public class Blog
{
public virtual Guid ID { get; set; }
public virtual string BlogName { get; set; }
private IList<post> _Posts = new List<post>();
public virtual IList<post> Posts
{
get { return _Posts; }
set { _Posts = value; }
}
}
public class Post
{
public virtual Guid ID { get; set; }
public virtual Blog Blog { get; set; }
public virtual string PostTitle { get; set; }
}
Para começar a utilizar o CTP 4 adicione a referência ao assembly Microsoft.Data.Entity.Ctp na tab .Net e adicione também o assembly System.Data.Entity.
Criado o domínio, temos que criar agora o contexto de dados. Crie uma classe no projeto Persistencia com o nome BlogContext conforme o código abaixo
using System.Data.Entity;
public class BlogContext : DbContext
{
public BlogContext() : base(ConfigurationManager.ConnectionStrings["BlogConnection"].ConnectionString)
{
}
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post>
Posts { get; set; }
}
Por último configure a conexão com o banco de dados, segue um exemplo abaixo
<configuration>
<connectionStrings>
<add name="BlogConnection" connectionString ="Data Source=.;Initial Catalog=Blog;Integrated Security=SSPI;" providerName ="System.Data.SqlClient.SqlConnection"/>
</connectionStrings>
</configuration>
Acessando os dados
class Program
{
static void Main(string[] args)
{
using (var context = new BlogContext())
{
var blog = new Blog { ID = Guid.NewGuid(), BlogName = "AndrePassos.net" };
context.Blogs.Add(blog);
int rows = context.SaveChanges();
Console.WriteLine("{0} entidades atualizadas no banco de dados", rows);
Console.ReadKey();
}
}
}
Agora já podemos rodar o programa e verificar que um novo blog foi adicionado.
No próximo post irei explicar mais detalhadamente sobre o DbContext e o ModelDiscovery. Até a próxima
Is it really POCO if you have to declare properties as virtual, which you would NOT have done if you were using any other ORM?
if you are using almost all others ORM you have to use virtuals in POCO classes