My(遗留,无法更改)架构在User和UserAddress之间具有一对一的关系,并带有复合键:
Users:
- username (PK)
- email (PK)
- firsname
- lastname
UsersAddresses:
- username (PK, FK)
- email (PK, FK)
- city
- street
我最初的想法是使用<join
将它们全部带到同一个类:
public class UserDTO
{
public string Username { get; set; }
public string Email { get; set; }
public string FirstName { get; set; }
public string City { get; set; }
//etc...
}
但我不知道映射:
Join("UsersAddresses", j=>
{
j.Table("UsersAddresses");
j.Fetch(FetchKind.Join);
j.Optional(false);
j.Key(k=>
{
//What here???
k.Column(c=>
{
c.Name("");
c.Name("");
});
k.ForeignKey("");
k.ForeignKey("");
});
});
有没有办法实现这个目标?或许我应该选择组件或一对一映射...
答案 0 :(得分:0)
尝试使用Columns
而不是Column
- 它需要任意数量的列映射lambda来允许跨越多列的映射对象,例如密钥:
Join("UsersAddresses", j =>
{
j.Table("UsersAddresses");
j.Fetch(FetchKind.Join);
j.Optional(false);
j.Key(k =>
{
k.Columns(c =>
{
c.Name("username");
c.ForeignKey("username_fk");
}, c =>
{
c.Name("email");
c.ForeignKey("email_fk");
});
});
});