unique-constraint - one - navigation property in entity framework core
¿Entity Framework 5 admite restricciones únicas? (5)
¿Se pregunta si Entity Framework 5 admite restricciones únicas en las propiedades de la entidad? Si es así, ¿cómo puedo especificar que una propiedad debe ser única?
Bueno, estaba buscando una solución y finalmente la encontré. Cuando genera migración en código puede crear una clave única
CreateTable(
"dbo.TaBLE",
c => new
{
Id = c.Int(nullable: false, identity: true),
Date = c.DateTime(nullable: false),
Meter_Id = c.Int(),
})
.PrimaryKey(t => t.Id)
.Index(t => new {t.Meter_Id, t.Date}, true);
La validación antes de la inserción se puede hacer en el nivel BLL, por lo que creo que puede resolver su problema.
Como se mencionó anteriormente, no se admite, pero por ahora, cuando creo una base de datos mediante programación (primero el código), uso el siguiente código en la sección de base de datos de inicio:
MainDBContext mainDBContext = new MainDBContext();
mainDBContext.Database.ExecuteSqlCommand("ALTER TABLE table_name ADD CONSTRAINT uc_FieldName UNIQUE(FieldName)");
mainDBContext.Dispose();
Encontré una solución temporal para lograr restricciones únicas en las propiedades de la entidad. Es realmente e intuitivo. Por favor, consulte mi otro post:
https://.com/a/16496291/1873113
No, no lo hace. En el pasado, había planes para incluir una característica de restricción única en EF 5.0:
http://blogs.msdn.com/b/efdesign/archive/2011/03/09/unique-constraints-in-the-entity-framework.aspx
Pero puedes ver que hay una actualización en la parte superior de la publicación:
Actualización: esta función se ha pospuesto y no se incluirá en Entity Framework 5.
Puede votar en la función para aumentar posiblemente la prioridad con la que se implementa ...
... porque aparentemente ni siquiera está en la hoja de ruta de EF 6.0 en este momento:
Si bien las restricciones únicas todavía no son compatibles de fábrica (versión 6.0 al momento de escribir esto), hay algunas soluciones para el enfoque de Code First para obtener el comportamiento deseado. Vea una solución basada en atributos , como respuesta a una pregunta similar. Funciona con EF 5.0+.
EDITAR:
A partir de EF 6.1 se admiten índices únicos :
[Index(IsUnique = true)]
public string EmailAddress { get; set; }
Son las mismas restricciones únicas para los propósitos más prácticos .