c# - tutorial - Cómo definir una referencia uno a uno utilizando primero el Código Entity Framework
entity framework descargar (1)
Quiero implementar el control de versiones en my entity Stuff . Cada entidad tiene una referencia opcional a la próxima versión (la última versión será nula) y una referencia opcional a la versión anterior (la primera versión será nula). Estoy usando entity framework 6, code first. Intenté con el siguiente modelo y declaración de modelbuilder (y muchas variaciones).
public class Stuff
{
public int StuffId { get; set; }
[ForeignKey("NextVersion")]
public int? NextVersionId { get; set; }
[InverseProperty("PreviousVersion")]
public virtual Stuff NextVersion { get; set; }
public virtual Stuff PreviousVersion { get; set; }
}
modelBuilder.Entity<Stuff>().HasOptional(t => t.NextVersion).WithOptionalDependent(t => t.PreviousVersion);
Sin embargo, en este caso, se ignora [ForeignKey ("NextVersion")] y se genera una clave externa NextVersion_StuffId. ¿Cómo puedo indicarle a EF que use la propiedad NextVersionId como clave externa?
public class Stuff
{
public int Id { get; set; }
public int? NextVersionId { get; set; }
public int? PrevVersionId { get; set; }
public virtual Stuff NextVersion { get; set; }
public virtual Stuff PrevVersion { get; set; }
}
Actualizado:
modelBuilder.Entity<Stuff>().HasOptional(t => t.NextVersion).WithMany().HasForeignKey(t => t.NextVersionId);
modelBuilder.Entity<Stuff>().HasOptional(t => t.PrevVersion).WithMany().HasForeignKey(t => t.PrevVersionId);