1

我的(旧版,无法更改)架构在 User 和 UserAddress 之间具有一对一的关系,并带有一个复合键:

Users:
- username (PK)
- email (PK)
- firsname
- lastname

UsersAddresses:
- username (PK, FK)
- email (PK, FK)
- city
- street

我最初的想法是使用 a<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("");
                });

                                });

有没有办法做到这一点?或者也许我应该选择一个组件或一对一的映射......

4

1 回答 1

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");
        });
    });
});
于 2012-03-30T14:50:06.817 回答