Tengo 2 entidades relacionadas, pero el esquema sql heredado tiene esencialmente 2 columnas clave para la misma tabla (no una clave de 2 columnas: ver a continuación). Necesito crear una relación con la columna 'clave falsa'. ¿Hay alguna manera de hacerlo declarativamente en Entity Framework 4.1?Entidad Framework 4.1 - Relaciones entre columnas no clave
Public Class Client
Inherits ModelBase
<Key(), Required()>
Public Property ClientID As Decimal
<Required(), StringLength(50)>
Public Property ClientCode As String
........
Public Class ClientLocation
Inherits ModelBase
........
<Required(), StringLength(50)>
Public Property ClientCode As String
........
<ForeignKey("ClientCode")>
Public Overridable Property Client As Clients.Client
Y el error que estoy consiguiendo es: se detectaron
* Uno o más errores de validación durante la generación del modelo: System.Data.Edm.EdmAssociationConstraint:: Los tipos de propiedades en todas las el rol dependiente de una restricción referencial debe ser del mismo modo que los tipos de propiedad correspondientes en la función principal. El tipo de propiedad 'ClientCode' en la entidad 'ClientLocation' no se coincide con el tipo de propiedad 'ClientId' en la entidad 'Cliente' en el restricción de referencia 'ClientLocation_Client'. *
, ya que piensa que' m tratando de mapear ClientLocation.ClientCode> Client.ClientID, cuando yo estoy tratando de asignar ClientLocation.ClientCode> Client.ClientCode ...
¿Alguna idea?
Gracias!
"* ... el esquema de SQL legado esencialmente tiene 2 columnas clave para la misma mesa ... *": ¿Quiere decir que 'Client.ClientCode' es una columna con un índice único en la base de datos? ¿O qué son entonces "2 columnas clave ... pero no clave compuesta"? ¿Y desea asignar 'ClientLocation.Client' de alguna manera a esta columna única' Client.ClientCode'? – Slauma
La tabla tiene 2 claves efectivas, pero la segunda no está identificada como clave, y no tiene índice. Por ejemplo, ClientID podría ser 4 y ClientCode podría ser "FOGCREEK". Los dos no están relacionados o son dependientes, simplemente resultan ser únicos. Y sí, tendrá que asignar de nuevo a la tabla original con el Client.ClientCode, a pesar de que no está marcada como una clave en mi entidad. –
Ah, ya veo, entonces 'ClientCode' es una columna ordinaria. La unicidad es garantizada accidentalmente por la lógica comercial. Me temo que la respuesta de Ladilav es la última palabra. – Slauma