Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

RSS iMasters

[Resolvido] Conhecendo o Thunderstruck

Recommended Posts

O Thunderstruck é uma biblioteca .NET que faz o acesso ao banco de dados mais simples e mais rápido usando ADO.NET. É uma maneira muito rápida para acessar bancos de dados.

 

Ele não é um ORM e não abstrai o "todo-poderoso" banco de dados, apenas torna o acesso mais fácil!

 

Baixar a versão binária estável de Thunderstruck. O código fonte está no Github.

 

http://www.apache.org/licenses/LICENSE-2.0

 

Guia Rápido

DataContext

 

String de conexão padrão

<connectionStrings>

<add name="Default" providerName="" connectionString="" />

</connectionStrings>

DataContext padrão.

using (var context = new DataContext())

{

context.Execute("DELETE FROM Cars");

context.Execute("DELETE FROM Tools");

context.Commit();

}

DataContext não-transacional.

using (var context = new DataContext(Transaction.No))

{

context.Execute("DELETE FROM Cars");

context.Execute("DELETE FROM Tools");

}

Usando outro banco de dados (string de conexão).

new DataContext("ConnectionStringName", Transaction.Begin)

Obter um valor a partir do banco de dados.

var query = "SELECT COUNT(Id) FROM Tools";

object toolsCount = context.GetValue(query);

Ou tipado...

int toolsCount = context.GetValue<int>(query);

Ou obter muitos valores...

var query = "SELECT Name FROM Tools";

var toolsName = context.GetValues<string>(query);

Lista de objetos do banco de dados.

var cars = context.All<Car>("SELECT * FROM Cars");

Parâmetros de ligação

 

Propriedades de ligação.

var car = new Car { Name = "Esprit Turbo", ModelYear = 1981 };

var command = "INSERT INTO Car VALUES (@Name, @ModelYear)";

context.Execute(command, car);

Selecione os cars do futuro

var query = "SELECT * FROM Car WHERE ModelYear > @Year";

car futureCars = context.All<Car>(query, DateTime.Today);

Você pode vincular um Dicionário <string, object> também.

 

DataObjectCommand

 

Criando um objeto command.

 

var command = new DataObjectCommand<Car>();

Com propriedade.

public DataObjectCommand<Car> Command

{

get { return new DataObjectCommand<Car>(); }

}

Insert.

var car = new Car { Name = "Esprit Turbo", ModelYear = 1981 };

command.Insert(car);

Inserir binds da chave primária gerada.

// car.Id == 0

command.Insert(car);

// car.Id > 0

DataObjectCommand transacional

 

Command.Insert(car, context);

 

(...)

 

context.Commit();

Update e Delete têm o mesmo comportamento.

car.Name = "Esprit S3";

Command.Update(car);

 

Command.Delete(car)

DataObjectQuery

 

Criar um objeto query.

 

var select = new DataObjectQuery<Car>();

Ou?

new DataObjectQuery<Car>(table: "TB_CARS");

 

new DataObjectQuery<Car>(primaryKey: "IdCar");

 

new DataObjectQuery<Car>(table: "TB_CARS", primaryKey: "IdCar");

Com propriedade.

public DataObjectQuery<Car> Select

{

get { return new DataObjectQuery<Car>(); }

}

var allCars = Select.All();

 

var lotusCars = Select.All("WHERE Name Like '%Lotus%'");

 

var newerCar = Select.First("ORDER BY ModelYear DESC");

Parâmetros de ligação.

 

anyObject.CarName = "Lotus Esprit Turbo";

 

var cars = Select.All("WHERE Name = @CarName", anyObject);

DataObjectQuery transacional.

 

Select.With(context).First("ORDER BY ModelYear DESC");

DataObjects personalizados

 

Se TB_CARS é o nome da tabela.

 

DataObjectCommand personalizado.

new DataObjectCommand<Car>("TB_CAR");

DataObjectQuery personalizado.

new DataObjectQuery<Car>("Name, ModelYear FROM TB_CAR");

Projeção com os campos padrão.

new DataObjectQuery<Car>("{0} FROM TB_CAR");

Mais

 

Usando um provedor personalizado.

ProviderResolver.CustomProviderType = typeof(MyProvider);

Alterando o nome padrão da string de conexão.

DataContext.DefaultConnectionStringName = "OtherDatabase";

?

Texto original disponível em http://www.wagnerandrade.com/thunderstruck

 

 

 

 

 

 

 

 

 

 

http://imasters.com.br/artigo/24556/dotnet/conhecendo-o-thunderstruck

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.