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;
}
}
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();
}
© João Felipe Borges Portela 2010-2019. | Entrar