Свободный NHibernate: сопоставление столбца с другим именем - PullRequest
0 голосов
/ 03 июня 2010

Допустим, у меня есть таблица:

Project
Id
Title
ProjectManagerId
ContactId

ProjectManagerId и ContactId являются идентификаторами из таблицы с именем Person:

Person
PersonId
Firstname
Lastname

Как я могу сопоставить эти два столбца, чтобы создать объект человека? (либо используя автоматическое отображение, либо обычное отображение беглого).

Спасибо

Ответы [ 2 ]

2 голосов
/ 08 июня 2010

Просто создайте два класса как:

public class Person
{
    public virtual int PersonId { get; set; }

    public virtual string FirstName { get; set; }

    public virtual string Surname { get; set; }
}


public class Project
{
    public virtual int ProjectId { get; set; }

    public virtual string Title { get; set; }

    public virtual Person ProjectManager { get; set; }

    public virtual Person Contact { get; set; }
}

и класс сопоставления для Project, поскольку он более интересен, чем Person:)

public class ProjectMap : ClassMap<Project>
{
    public ProjectMap()
    {
        Id(x => x.ProjectId);
        Map(x => x.Title);
        References(x => x.ProjectManager);
        References(x => x.Contact);
    }
}

если вы используете FNH

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

public class ProjectMappingOverride : IAutoMappingOverride<Project>
{
    public void Override(AutoMapping<Project> mapping)
    {
        mapping.Id(x => x.ProjectId); //Usually for Id I have a convention, and not define it here
        mapping.Map(x => x.Title); //Also for simple properties. You could remove these lines if you have setup the conventions.
        mapping.References(x => x.ProjectManager);
        mapping.References(x => x.Contact);
    }
}

Не забывайте о Конвенции других настроек:)

1 голос
/ 03 июня 2010

Что бы я сделал, я бы создал представление с именем «Person», которое содержит необходимые данные, и затем сопоставил бы их, как и обычную таблицу.

...