Blog

Utilizando o atributo ObsoleteAttribute


No desenvolvimento de ferramentas que serão reutilizadas, como frameworks, é comum haver métodos, propriedades, classes, etc, que deixem de ser válidas e passem a não ser mais utilizadas, seja por mudanças na lógica, ou por qualquer motivo. Nessas situações dispomos de um atributo do .NET framework, que torna obsoleto o elemento, podendo deixá-lo ainda com possibilidade de uso ou não. No exemplo abaixo pode-se ver um método obsoleto:

 
[Obsolete("Esse método é obsoleto, utilize o método Y")]
public void X()
{
    [...]
}

Para impedir que o método continue sendo utilizado, adicionamos um ultimo parâmetro:
 
[Obsolete("Esse método é obsoleto, utilize o método Y", true)]
public void X()
{
    [...]
}

C# .net

101 exemplos de operações com LINQ


Para quem está começando ou até mesmo já utiliza LINQ nos seus projetos aqui vai uma lista com 101 exemplos de operações com LINQ. É bem provável que aquela sua dúvida possa estar aqui.

 
  
Restriction Operators
Where - Simple 1
Where - Simple 2
Where - Simple 3
Where - Drilldown
Where - Indexed

Projection Operators

Select - Simple 1
Select - Simple 2
Select - Transformation
Select - Anonymous Types 1
Select - Anonymous Types 2
Select - Anonymous Types 3
Select - Indexed
Select - Filtered
SelectMany - Compound from 1
SelectMany - Compound from 2
SelectMany - Compound from 3
SelectMany - from Assignment
SelectMany - Multiple from
SelectMany - Indexed

Partitioning Operators

Take - Simple
Take - Nested
Skip - Simple
Skip - Nested
TakeWhile - Simple TakeWhile - Indexed
SkipWhile - Simple
SkipWhile - Indexed

Ordering Operators

OrderBy - Simple 1
OrderBy - Simple 2
OrderBy - Simple 3
OrderBy - Comparer
OrderByDescending - Simple 1
OrderByDescending - Simple 2
OrderByDescending - Comparer
ThenBy - Simple
ThenBy - Comparer
ThenByDescending - Simple
ThenByDescending - Comparer
Reverse
Grouping Operators
GroupBy - Simple 1
GroupBy - Simple 2
GroupBy - Simple 3
GroupBy - Nested
GroupBy - Comparer
GroupBy - Comparer, Mapped

Set Operators

Distinct - 1
Distinct - 2
Union - 1
Union - 2
Intersect - 1
Intersect - 2
Except - 1
Except - 2

Conversion Operators

To Array
To List
To Dictionary
OfType

Element Operators

First - Simple
First - Condition
FirstOrDefault - Simple
FirstOrDefault - Condition
ElementAt

Generation Operators

Range
Repeat

Quantifiers

Any - Simple
Any - Grouped
All - Simple
All - Grouped
Aggregate Operators
Count - Simple
Count - Conditional
Count - Nested
Count - Grouped
Sum - Simple
Sum - Projection
Sum - Grouped
Min - Simple
Min - Projection
Min - Grouped
Min - Elements
Max - Simple
Max - Projection
Max - Grouped
Max - Elements
Average - Simple
Average - Projection
Average - Grouped
Aggregate - Simple
Aggregate - Seed

Miscellaneous Operators

Concat - 1
Concat - 2
EqualAll - 1
EqualAll - 2

Custom Sequence Operators

Combine

Query Execution

Deferred Execution
Immediate Execution
Query Reuse

Utility Routines

GetProductList code

Join Operators

Cross Join
Group Join
Cross Join with Group Join
Left Outer Join

C# .net LINQ

SQL Server Compact 3.5: Funções suportadas


Quem está acostumado a trabalhar com o Sql Server Compact sabe que existem inúmeras limitações em relação a versão completa do gerenciador, mas quais são as reais possibilidades? SQL Server Compact 3.5 suporta as seguintes funções:

 
  • Funções de agregação:  Efetuar cálculos sobre um conjunto de valores e retornar um único valor. Com exceção da função COUNT, funções de agregação ignoram os valores nulos.
    AVGAVG COUNT MAX MIN SUM
  • Funções de data e hora:  Executar uma operação em um valor de entrada de data e hora e retornar uma string, numéricos ou data e valor de tempo.
    DATEADD DATEDIFF DATENAME DATEPART GETDATE
  • Funções matemáticas:  Efetuar cálculos com base nos valores de entrada fornecidos como parâmetros para a função e retornar um valor numérico.
    ABS ACOS ASIN ATAN ATN2 CEILING COS COT DEGREES EXP FLOOR LOG LOG10 PI POWER RADIANS RAND ROUND SIGN SIN SQRT TAN
  • Funções de texto:  Executar uma operação em um valor string de entrada e retornar uma string ou um valor numérico.
    NCHAR CHARINDEX LEN LOWER LTRIM_lce_ltrim PATINDEX REPLACE REPLICATE RTRIM SPACE_lce_space STR STUFF SUBSTRING UNICODE UPPER_lce_upper
  • Funções do sistema:  Executar operações sobre, e retornam informações sobre, valores, objetos e configurações no SQL Server Compact 3.5.
    @@IDENTITY COALESCE DATALENGTH
Mais informações no site do MSDNhttp://msdn.microsoft.com/en-us/library/ms174077(v=SQL.100).aspx

SQL Server Compact 3.5

Erro 29506 ao instalar o SQL Server 2005 Management Studio Express


Estava tentando instalar o SQL Server 2005 Management Studio Express em meu Windows 7 x64 quando me deparei com um erro no fim da instalação.



Esse erro ocorre no Windows Vista e no Windows 7. O problema tem relação com a tecnologia User Account Control (UAC), que bloqueia a permisão do usuário para fazer determinadas alterações. 

Existem duas formas de driblar este problema, a primeira é basicamente desativar o UAC, mas está não é recomendada. A forma mais indicada é a seguinte:

1. No menu principal vá em "Todos os programas", depois em "Acessórios", clique com o botão direito no atalho do Prompt de Comando e selecione "Executar como Administrador". Aceite o aviso UAC quando solicitado.

2. Navegue até o diretório onde o arquivo de instalação está salvo

3. Digite o comando .\ SQLServer2005_SSMSEE_x64.msi se você está rodando com um Windows x64 (64-bit) ou .\SQLServer2005_SSMSEE.msi se você está rodando com um Windows x86 (32-bit)

4. Pressione enter e concluir a instalação normalmente.

SQL Server 2005 Management Studio

SQL Compact, Identity Columns e Entity Framework


Para quem está desenvolvendo ou quer desenvolver um projeto utilizando o SQL Server Compact 3.5, saiba que existe uma falha relacionada ao comportamento identity em colunas das tabelas da base da dados. Uma alternativa para solucionar isto é não definir na base de dados as colunas como identity e criar um controle externo para índice dos registros. Uma forma de controlar os índices das tabelas é consultando o ultimo índice adicionado, claro que não funcionará como o identity normal, que define o índice baseando-se em um contador, mas funcionará muito bem e permitira o uso da base de dados. Abaixo vemos a implementação desta solução:

 
public static class ExtensionMethods
{
    public static TResult NextId(this ObjectSet table, Expression> selector)
        where TSource : class
    {
        TResult lastId = table.Any() ? table.Max(selector) : default(TResult);

        if (lastId is int)
        {
            lastId = (TResult)(object)(((int)(object)lastId) + 1);
        }

        return lastId;
    }
}

E utilize do seguinte artifício para controlar o índice dos registros:
 
using (DBEntities contexto = new DBEntities())
{
    // cria aluno define um novo objeto aluno
    Aluno aluno = new Aluno() {
        contexto.Aluno.NextId(a => a.Id),
        Nome = "João Felipe Portela" }; 

    // adiciona a lista de alunos
    contexto.AddToAluno(aluno); 

    // salva as alterações
    contexto.SaveChanges();
}

Mais informações em enigmadomain.wordpress.com.


(Este artigo foi atualizado em 08/01/2017)

C# .net SQL Compact Identity Columns Entity Framework