当前位置:  开发笔记 > 大数据 > 正文

在连接表中使用额外列进行多对多映射

如何解决《在连接表中使用额外列进行多对多映射》经验,为你挑选了1个好方法。

这是我希望拥有的域名:

public class Person
{
    public int Id { get; set; }
    public IList 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(对于人员和证书)?



1> sbohlen..:

根据设计,如果除了在中间(中间)表中表示的具有多对多关系的FK对之外,NHibernate仅支持隐式的多对多映射.

前一段时间,Billy McCafferty在博客上写了这个确切的"问题"(自BY DESIGN以来并不是真正的问题)......

http://devlicio.us/blogs/billy_mccafferty/archive/2008/07/11/when-to-use-many-to-one-s-vs-many-to-many-with-nhibernate.aspx

推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有