Praticando o CRUD com o Entity Framework 5 + MySQL, CodeFirst, surgiu uma dúvida.
Como especificar que um campo é único?
Estou a utilizar migrations
Cumps PS
Praticando o CRUD com o Entity Framework 5 + MySQL, CodeFirst, surgiu uma dúvida.
Como especificar que um campo é único?
Estou a utilizar migrations
Cumps PS
A primeira coisa a fazer é declarar o namespace Imports System.ComponentModel.DataAnnotations no arquivo.
E antes da propriedade colocar[Key] como no exemplo:
public class Livro { [Key] public string ISBN { get; set; }
[StringLength(256)] public string Titulo { get; set; }
public string Autor { get; set; }
}
Olá Christiane,
Obrigado pela resposta. Mas infelizmente a minha dúvida continua.
[Key] - não serve apenas para chave primária?
Ou é permitido fazer como abaixo: ??
public class Utilizador
{
[Key]
public int Id { get; get; }
[Key]
public string Username { get; set; }
public string Password { get; set; }
}
pois a ideia é tornar o campo "username" único.
Grato pela atenção
Cumps PS
EF não suporta UK vai ter que rodar ela no banco..
na mão ou com o ef:
_contexto.Database.ExecuteSqlCommand("CREATE UNIQUE KEY ...")
Pode ser possível colocar ela na lógica da aplicação.
public void SalvarUsuario(Usuario user)
{
if (contexto.Usuarios.Select(u => u.Nome == user.Nome))
throw new Exception("Unique Key Violation: Usuario Com nome repetido");
// resto do código para salvar ...
}
Po não tem como editar, faltou o .Any() ou .Count > 0
public void SalvarUsuario(Usuario user)
{
if (contexto.Usuarios.Select(u => u.Nome == user.Nome).Any())
throw new Exception("Unique Key Violation: Usuario Com nome repetido");
// resto do código para salvar ...
}
Ainda não testei... mas acho que vou ficar com a solução do Turah
Muito obrigado