Simple.Data
Olá pessoal, hoje eu vou falar um pouco sobre Simple.Data.
O que é?
Simple.Data é um micro framework de acesso a banco de dados baseado no ActiveRecord e DataMapper do Ruby.
Ele usa dynamic do .NET 4 para interpretar nomes de método e propriedade em tempo de execução e mapeá-los usando uma abordagem baseada em convenções.
Como instalar?
Você pode instalar via NuGet, segue a lista dos pacotes oficiais do Simple.Data.
Se você vai usar no SQL Server por exemplo, você pode executar o comando abaixo no Package Manager Console do Visual Studio.
Install-Package Simple.Data.SqlServerdotnet add package Simple.Data.SqlServerQual problema resolve?
Não precisa de muitas linhas de códigos para acessar o banco de dados.
Não precisa se preocupar com SQL injection.
É uma forma fluente de escrever as operação que serão feitas no banco de dados.
Diferente dos ORM’s como [NHibernate][nhibernate], não precisa configurar o mapeamento de tabela para classe.
Alguns exemplos
Insert, existem várias formas de inserir um dado usando Simple.Data, abaixo apenas uma das possíveis formas, este exemplo completo está no GitHub.
var db = Database.OpenNamedConnection("db");
var account = new Account
{
Name = "Junior",
Email = "[email protected]",
Password = "123456"
};
db.Accounts.Insert(account);Update, existem várias formas de atualizar um dado usando Simple.Data, abaixo apenas uma das possíveis formas, este exemplo completo está no GitHub.
var db = Database.OpenNamedConnection("db");
Account account = db.Accounts.Get(id);
account.Name = "Junior Oliveira";
db.Accounts.Update(account);Delete, existem várias formas de deletar um dado usando Simple.Data, abaixo apenas uma das possíveis formas.
var db = Database.OpenNamedConnection("db");
db.Accounts.DeleteById(id);Abaixo alguns exemplos mais complexos do que se consegue fazer com Simple.Data.
Exemplo usando All, Select, Where, Skip, Take e OrderBy, este exemplo completo está no GitHub.
var db = Database.OpenNamedConnection("db");
List<Account> model = db.Accounts.All()
.Select(
db.Accounts.Id,
db.Accounts.Name,
db.Accounts.Email)
.Skip(_skip.Apply(filter))
.Take(_limit.Apply(filter))
.OrderBy(
db.Accounts.Name);Outro exemplo usando Join ~ On, As, e FirstOrDefault, este exemplo completo está no GitHub.
dynamic accounts;
var data = db.Urls.All()
.Join(db.Accounts, out accounts)
.On(db.Urls.AccountId == accounts.Id)
.Select(
db.Urls.Id,
db.Urls.Address,
accounts.Id.As("AccountId"))
.Where(
db.Urls.Shortened == shortened)
.FirstOrDefault();Em Simple.Data existem várias formas de fazer uma coisa, segue o site da documentação completa, você pode utilizar a que você achar melhor.
Notem que quando eu declaro List<Account> model = ..., o Simple.Data já faz o cast automático para o tipo que eu estou declarando, mas as propriedades e as colunas precisam ter o mesmo nome.
No Simple.Data eu não posso utilizar interface para fazer o cast por exemplo IList ao invés de List.
Configurando Log de SQL
No Simple.Data, é possível configurar para ele mostrar o SQL gerado no Output do Visual Studio.
É só adicionar as linhas abaixo no Web.config de sua aplicação web por exemplo, o exemplo completo está no GitHub
<system.diagnostics>
<switches>
<add name="Simple.Data" value="Information" />
</switches>
</system.diagnostics>Suporte a vários bancos de dados SQL e NoSQL
Simple.Data consegue fornecer suporte a vários bancos de dados por causa de sua linguagem própria para realizar as operação no banco de dados.
Atualmente, ele dá suporte para:
- Acesso baseado em ADO para bancos de dados relacionais:
- SQL Server 2005 e versões posterior (incluindo SQL Azure)
- SQL servidor Compact Edition 4.0
- Oracle
- MySQL 4.0 e posterior
- SQLite
- PostgreSQL
- SQLAnywhere
- Informix
- MongoDB
- OData
O suporte a Azure Table Storage está em desenvolvimento. Simple.Data também suporta Mono na versão 1.0.
Obrigado pela visita e até a próxima.
Comentários