使用按代码映射的NHibernate一对一映射

时间:2012-06-01 06:52:29

标签: nhibernate mapping-by-code

我有这样的类结构:

public class BaseEntity
{
    public Guid Id { get; set; }
}

// CREATE TABLE Project (Id, Name)
public class Project : BaseEntity
{
    public ProjectProperties Properties { get; set; }
    public string Name { get; set; }
}

// CREATE TABLE ProjectProperties (Id, Markup)
// ForeignKey from ProjectProperties.Id -> Project.Id
public class ProjectProperties  : BaseEntity
{
    public int Markup { get; set; }
}

使用NH 3.2和按代码映射来映射这个的正确方法是什么?我无法找到1:1关系通过PK的例子。

2 个答案:

答案 0 :(得分:0)

您可以使用Join,因为主键匹配。它甚至不需要自己的Id,因为它依赖于Project

public class ProjectProperties
{
    public int Markup { get; set; }
}


// in ProjectMapping
Join("ProjectProperties", join =>
{
    join.Key("Id");
    join.Component(x => x.ProjectProperties, c =>
    {
        c.Property(x => x.Markup);
    }
});

答案 1 :(得分:0)

我认为你应该使用这段代码。

OneToOne(x => x.Properties,
           x => x.PropertyReference(typeof(ProjectProperties).GetProperty("Properties")));