我有这样的类结构:
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的例子。
答案 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")));