2010-08-24 9 views
0

J'ai un système hérité sur lequel je travaille et il y a une relation particulière avec laquelle j'ai des problèmes.Relation many-to-many via une clé non-primaire pour un système existant

Le problème est que je dois relier Patient à HL7EPICareMeds ... la relation ci-dessus ne fonctionne pas, bien sûr.

Du point de vue de la table, voici ce que j'ai

patient:
PatientId: int, PK
ClinicPatientId: varchar --- pas unique

HL7EPICareMeds:
Id :: int, PK
ClinicPatientId: varchar
MedName: varchar
AdminTime: datetime

Dois-je réutiliser la table Patient comme table d'association entre ClinicPatientIDs et PatientId?

[ActiveRecord] 
public class Patient : RecordBase<Patient> 
{ 
    [PrimaryKey("PatientId", Generator=PrimaryKeyType.Native)] 
    public int? Id 
    { 
     get { return _id; } 
     set 
     { 
      _id = value; 
     } 
    } 

    [HasAndBelongsToMany(Inverse = true, Lazy = true)] 
    public IList<HL7EPICareMeds> Meds 
    { 
     get { return _meds; } 
     set { _meds = value; } 
    } 
} 

[ActiveRecord] 
public class HL7EPICareMeds : RecordBase<HL7EPICareMeds> 
{ 
    [PrimaryKey(Generator = PrimaryKeyType.Native)] 
    public long Id 
    { 
     get { return _Id; } 
     set 
     { 
      _Id = value; 
     } 
    } 

    [Property("AdminTime")] 
    public DateTime? AdministrationTime 
    { 
     get { return _AdministrationTime; } 
     set { _AdministrationTime = value; } 
    } 

    [Property(NotNull = true,Update=false,Insert=false), 
    ValidateLength(0, 20)] 
    public string ClinicPatientId 
    { 
     get { return _ClinicPatientId; } 
     set 
     { 
      _ClinicPatientId = value; 
     } 
    } 

    [Property(NotNull = true), 
    ValidateLength(0, 255)] 
    public string MedName 
    { 
     get { return _MedName; } 
     set 
     { 
      _MedName = value; 
     } 
    } 

    [HasAndBelongsToMany()] 
    public Patient Patient 
    { 
     get { return _patient; } 
     set { _patient = value; } 
    } 
} 

Répondre

0

Examinez l'élément de mappage de propriété-ref. Cela devrait faire exactement ce dont vous avez besoin.

Il est utilisé pour associer des entités lorsque le FK n'est pas nécessairement un PK sur la table parente.

+1

La correspondance de propriété-ref n'est-elle pas disponible uniquement dans une relation un-à-plusieurs? Ou peut-être son utilisé pour l'héritage de table? – Marc