Estoy intentando usar primero el código y la API para crear un objeto que contenga dos entidades diferentes de la misma tabla. En otras palabras, un objeto de transferencia contiene una referencia a dos objetos de tanque diferentes: uno es la fuente y el otro el destino.Asociaciones múltiples de un objeto a dos objetos de la misma entidad Tipo
Sin embargo, cuando uso el siguiente código obtengo una Excepción que indica que "La relación referencial dará como resultado una referencia cíclica que no está permitida".
modelBuilder.Entity<Transfer>()
.HasRequired<Tank>(t => t.Source)
.WithMany(t => t.OutboundTransfers);
modelBuilder.Entity<Transfer>()
.HasRequired<Tank>(t => t.Destination)
.WithMany(t => t.InboundTransfers);
Mi mejor estimación es que cree que estoy apuntando ambas teclas al mismo tanque? ¿Alguna idea de cómo puedo lograr esto?
EDIT: encontrado la respuesta como la adición de .WillCascadeOnDelete (falsa) de Entity Framework Code First - two Foreign Keys from same table
Sí, no puede dejar que EF 4.1 habilite las restricciones de eliminación en cascada cuando dos propiedades de navegación apuntan a la misma tabla. para habilitar las restricciones adecuadas, deberá agregarlas manualmente en la base de datos utilizando los objetos Seeding para ejecutar los scripts adecuados. –
Eso es todo, como lo han encontrado y como también señaló Alexandre. Hacerlo manualmente en el MSSMS arroja el error "No se puede crear la relación (...) puede causar ciclos o múltiples rutas en cascada. Especifique EN ELIMINAR SIN ACCIÓN o EN ACTUALIZAR SIN ACCIÓN, o modificar otras restricciones de LLAVE EXTRAÑA". –
¿Puede agregar su solución como respuesta y marcarla? – sinelaw