这是我希望拥有的域名:
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 属性而出现问题?日期实际上只是拥有证书的人关心的问题。
[Edit]
我现在更改了域模型以反映需要一个新实体。现在对于映射,我需要 3 个(对于每个实体)映射还是可以使用 2 个(对于人员和证书)映射?
根据设计,如果除了保存多对多关系的中间(中间)表中表示的一对 FK 之外绝对没有其他任何东西,NHibernate 仅支持隐式多对多映射。
不久前,Billy McCafferty 在博客中谈到了这个确切的“问题”(由于其设计本身并不是一个真正的问题)......
http://devlicio.us/blogs/billy_mccafferty/archive/2008/07/11/when-to-use-many-to-one-s-vs-many-to-many-with-nhibernate.aspx http://devlicio.us/blogs/billy_mccafferty/archive/2008/07/11/when-to-use-many-to-one-s-vs-many-to-many-with-nhibernate.aspx
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)