遗留系统的非主密钥的多对多关系

时间:2010-08-24 17:40:19

标签: .net nhibernate castle-activerecord

我有一个我正在研究的遗留系统,并且我遇到了一个特殊的关系。

问题在于我需要将患者与HL7EPICareMeds联系起来......当然,上述关系不起作用。

从表格的角度来看,这就是我所拥有的

病人:
PatientId:int,PK
ClinicPatientId:varchar ---不唯一

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

我应该将Patient表重用为ClinicPatientIDs和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; }
    }
}

1 个答案:

答案 0 :(得分:0)

查看property-ref mapping元素。这应该完全符合您的需要。

当FK不一定是父表上的PK时,它用于关联实体。