Estoy diseñando mi base de datos usando código primero y necesito un poco de ayuda, creo.Entity Framework Code First - Definición de relaciones/claves
estoy recibiendo este error:
Introducing FOREIGN KEY constraint 'SalesOrder_Invoices' on table 'Invoices' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.
Could not create constraint. See previous errors.
Estoy tratando de tener las relaciones/teclas siguientes:
--> = 1 to Many Relationship
- Clientes -> CustomerLocation
- CustomerLocation -> SalesOrder
- SalesOrder -> Factura
- SalesRep -> SalesOrder
- PaymentTerm -> Cliente
- PaymentTerm -> SalesOrder
- PaymentTerm -> Factura
Estoy tratando de definirlos por el estándar de:
<ClassName><PrimaryKeyID>
Ejemplo: Customer
tiene ID
propiedad, por lo que en CustomerLocation
i definir la clave externa de este modo:
Public Property CustomerID AS Integer
Todo lo que tengo que hacer es definir la clave externa correcta? ¿También tengo que tener propiedades de navegación para cada tecla que defina?
Y, ¿no puedo tener varias claves foráneas en la misma clave principal de un objeto?
Actualizado
Así que para definir una relación, no se utiliza el ClassName.PrimaryKeyProperty
? o usas propiedades de navegación? ¿O ambos? ¡¡Confuso!!
Actualización 2
Así que para que una relación funcione tiene que definir ambos lados ... creo.
Public Class Customer
Public Property ID AS Integer
Public Overrideable Property Locations AS ICollection(OF CustomerLocation)
End Class
Public Class CustomerLocation
Public Property ID AS Integer
Public Property CustomerID AS Integer
End Class
Entonces, para que una relación funcione, ¿tiene que definir ambos lados? Por favor, mira mi actualización anterior. – Sam
@Sam: No, no necesita propiedad de navegación en ambos lados. –
Me encanta esta respuesta para la sugerencia 'OneToManyCascadeDeleteConvention'. – batwad