Linq For Delphi XE
- Cria a árvore de expressões;
- Converte a expressão para SQL;
- Executa a consulta;
- Retorna os dados;
- Converte os dados para Objeto.
Select
var
Query: IQueryAble;
begin
Query := From(Pessoa).Select;
Dataset.data := Context.GetData(Query);
Dataset.data := Context.GetData(Query);
end;
Where
var
Query: IQueryAble;
begin
Query := From(PessoaFisica).
Where( PessoaFisica.Id=1 ).
Select([PessoaFisica.CPF,PessoaFisica.Nome]);
Dataset.data := Context.GetData(Query);
Dataset.data := Context.GetData(Query);
end;
Joins
var
Query: IQueryAble;
begin
Query := From(Pessoa).
Join( Pessoa.Endereco ,
Pessoa.Endereco.PessoaId = Pessoa.Id ).
Pessoa.Endereco.PessoaId = Pessoa.Id ).
JoinLeft( PessoaFisica,
PessoaFisica.Id=Pessoa.Id).
PessoaFisica.Id=Pessoa.Id).
Where(Pessoa.Id=1).
Order([Pessoa.Nome]).
Select([Pessoa.Nome]);
Order([Pessoa.Nome]).
Select([Pessoa.Nome]);
Dataset.data := Context.GetData(Query);
end;
Dataset.data := Context.GetData(Query);
end;
var
Query: IQueryAble;
begin
Query := From([Pessoa, PessoaFisica]).Select;begin
Dataset.data := Context.GetData(Query);
end;
SubQuery
var SubQuery: string;
Query : IQueryAble;
begin
Query := From( From( Pessoa ).
Join(PessoaFisica, Pessoa.Id = PessoaFisica.Id).
Select(Pessoa.Nome) ).Select('NomeFantasia');
Dataset.data := Context.GetData(Query);
End;
Agregates
var Query : IQueryAble;
begin
Query := From(Pessoa).
Join(PessoaFisica, PessoaFisica.Id = pessoa.Id).
Join(PessoaFisica, PessoaFisica.Id = pessoa.Id).
GroupBy(Pessoa.Classificacao).
Select([Pessoa.Classificacao]).Count;
Select([Pessoa.Classificacao]).Count;
Dataset.data := Context.GetData(Query);
End;
ToList
var Query: IQueryAble;
CliList: TList<TEntity>;
begin
CliList:= TList<TEntity>.create;
Query := From(Cliente).Select;
CliList := Context.ToList(Query);
End;
End;
Funções Strings
var Query: IQueryAble;
begin
Query := From(Pessoa).Select([Pessoa.Nome.LTRIM]);
ou
Query := From(Pessoa).Select([Pessoa.Nome.UPPER]);
ou
Query := From(Pessoa).Select([Pessoa.Nome.SubString(1,10)]);
...
end;
In
var Query: IQueryAble;
begin
Query := From(Pessoa).
Where( Pessoa.Nome in ['A','B','C'] ).
Select([Pessoa.Nome]);
Context.GetQuery(Query) );
end;
var
Query: IQueryAble;
begin
Query := From(Pessoa).
Where( Pessoa.Nome.Contains('Lindemberg%') ).
Select([Pessoa.Nome]);
Like
var
Query: IQueryAble;
begin
Query := From(Pessoa).
Where( Pessoa.Nome.Contains('Lindemberg%') ).
Select([Pessoa.Nome]);
Case
var Cli: TCliente;
Query: IQueryAble;
begin
query := From(cli).
Select(
[ CaseOf( cli.CPFCNPJ ,
['02316937453' , '00123456000155'],
['Fisica' , 'Juridica']).
['Fisica' , 'Juridica']).
&As('TipoPessoa')] );
end;
Union
var Query: IQueryAble;
begin
Query := From(PessoaFisica).
Select([PessoaFisica.Nome]).
Union( From(PessoaJuridica).
Select([PessoaJuridica.Nome]) );
end;
begin
Query := From(PessoaFisica).
Select([PessoaFisica.Nome]).
Concat( From(PessoaJuridica).
Select([PessoaJuridica.Nome]) );
end;
var Query: IQueryAble;
begin
Query := From(PessoaFisica).
Select([PessoaFisica.Nome]).
&Except( From(PessoaJuridica).
Select([PessoaJuridica.Nome]) );
end;
var Query: IQueryAble;
begin
Query := From(Pessoa).
Select([Pessoa.Nome.&As]).
Intersect( From(PessoaJuridica).
Select([PessoaJuridica.Nome]) );
end;
Union All
var Query: IQueryAble;begin
Query := From(PessoaFisica).
Select([PessoaFisica.Nome]).
Concat( From(PessoaJuridica).
Select([PessoaJuridica.Nome]) );
end;
Not Exist
var Query: IQueryAble;
begin
Query := From(PessoaFisica).
Select([PessoaFisica.Nome]).
&Except( From(PessoaJuridica).
Select([PessoaJuridica.Nome]) );
end;
Exist
var Query: IQueryAble;
begin
Query := From(Pessoa).
Select([Pessoa.Nome.&As]).
Intersect( From(PessoaJuridica).
Select([PessoaJuridica.Nome]) );
end;
Distinct
var Query: IQueryAble;
begin
Query := From(Pessoa).Select(Pessoa.Id).Distinct(Pessoa.Nome);
end;
Generics
var Query: IQueryAble;
begin
Query := From(Cli).
Select([ Cli.CPFCNPJ ]).
Where(Cli.CPFCNPJ = '02316937453' );
Cliente := Context.GetEntity<TCliente>(Query);
end;
ClientesList: TList<TCliente>;
begin
ClientesList:= TList<TCliente>.create;
Query := From(TCliente).Select;
ClientesList := Context.GetList<TCliente>(Query);
showmessage( CliList.Items[0].CPFCNPJ );
Reference
var
Query: IQueryAble;
begin
Query := From(Pessoa).
Join(Pessoa.Endereco).//aqui o join se baseará no valor do atributo "Reference"
Where(Pessoa.Id = 1).
Select([ Pessoa.Nome,Pessoa.Endereco.Logradouro]) ;
end;
qual é o endereço para baixar esse framework, mande o endereço para herminiolpaesjr@gmail.com agradecido
ResponderExcluirhttps://github.com/LinlindembergCz/EntityFramework
ExcluirOlá, você pode mandar esta framework para mim? weslei.wds.dossantos@gmail.com Obrigado!
ResponderExcluirhttps://github.com/LinlindembergCz/EntityFramework
Excluirparabens , tem github?
ResponderExcluirhttps://github.com/LinlindembergCz/EntityFramework
Excluir
ResponderExcluirconstructor TContext.Create(E: TEnumEntities);
begin
inherited Create(TFactoryConnection.GetConnection);
Entity:= TFactoryEntity.GetEntity(E);
end;
[dcc32 Error] Context.pas(26): E2250 There is no overloaded version of 'Create' that can be called with these arguments
[dcc32 Fatal Error] InterfaceRepository.pas(6): F2063 Could not compile used unit 'Context.pas'
COMPİLER ERROR !!!
Baixa de novo o projeto... houve varias correções!
Excluir