这是我希望拥有的域:
public class Person
{
public int Id { get; set; }
public IList<AcquiredCertificate> AcquiredCertificates { get; set; }
}
public class AcquiredCertificate
{
public Person Acquirer { get; set; }
public Certificate Certificate { get; set; }
public DateTime DateAcquired;
}
public class Certificate
{
public int Id { get; set; }
}
这是我拥有的架构:
CREATE TABLE People (
PersonId INT PRIMARY KEY
);
CREATE TABLE Certificates (
CertificateId INT PRIMARY KEY
);
CREATE TABLE CertificatesAcquiredByPeople (
PersonId INT,
CertificatedId INT,
DateAcquired DATETIME
);
这是一个人为的架构和域,但它与我正在使用的东西几乎相同。我目前通过编写第三个域实体来表示 CertificatesAcquiredByPeople 表,但这对我来说真的很奇怪。
我将如何使用 NHibernate 映射它?我相信 hbm 文件中的组件标签应该做我想要的,但我不太明白。
我的域是否因为我的证书类上有一个 DateAcquired 属性而出现问题?日期实际上只是拥有证书的人的关注点。
[编辑]
我现在更改了域模型以反映需要一个新实体。现在对于映射,我需要 3 个(对于每个实体)映射,还是可以使用 2 个(对于人员和证书)进行映射?