Как отобразить отношение один-ко-многим, включающее таблицу соединений - PullRequest
0 голосов
/ 08 ноября 2011

У меня есть структура таблицы, которая выглядит примерно так:

User
-------
UserId
UserName
{several additional fields}

Program
-------
ProgramId
ProgramName
UserId
{several additional fields}

College
-------
CollegeId
CollegeName
{several additional fields}

College_Users
-------------
CollegeId
UserId

Каждая программа связана только с одним пользователем, но каждый колледж может быть подключен к нескольким пользователям.

У меня естьструктура класса, которая выглядит следующим образом:

public abstract class LoggedInUser {
    public virtual int UserId { get; set; }
    public virtual string UserName { get; set; }        
}

public class LoggedInProgram : LoggedInUser {
    public virtual int ProgramId { get; set; }
    public virtual int ProgramName { get; set; }
}

public class LoggedInCollege : LoggedInUser {
    public virtual int CollegeId { get; set; }
    public virtual int CollegeName { get; set; }
}

Я смог заставить Программу работать, используя следующие сопоставления:

public class LoggedInUserMap : ClassMap<LoggedInUser> {
    public LoggedInUserMap() {
        Table("Users");
        Id(x => x.UserId).Column("UserId");
        Map(x => x.UserName);
    }
}

public class LoggedInProgramMap : SubclassMap<LoggedInProgram> {
    public LoggedInProgramMap() {
        Table("Program");
        KeyColumn("UserId");
        Map(x => x.ProgramId);
        Map(x => x.ProgramName);
    }
}

Однако я не могу понять, какполучить колледж для сопоставления с этой структурой класса.

Я могу написать простой запрос, который даст мне результаты, которые я хочу, но не могу понять, как написать сопоставление, которое даст мне те же результаты.Запрос выглядит следующим образом:

select c.CollegeId
    , c.CollegeName
    , u.UserId
    , u.UserName
from College c 
inner join dbo.College_Users cu on c.CollegeId = cu.CollegeId   
inner join Users u on cu.UserId = u.UserId

Итак, мой вопрос состоит из двух частей: возможно ли заставить FluentNhibernate сделать это отображение, и если да, то как мне это сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...