NHibernate - отображение сущности из нескольких таблиц базы данных - PullRequest
1 голос
/ 05 января 2010

Можно ли отобразить свойства сущностей из разных таблиц базы данных? Скажем, у вас была модель данных ниже ...

[dbo.Albums]              [dbo.Songs]                [dbo.Artists]
AlbumID int (PK)          SongID int (PK)            ArtistID int (PK)
AlbumName nvarchar(100)   AlbumID int                ArtistName nvarchar(100)
.                         SongName nvarchar(50)      .
.                         Duration int               .
.                         ArtistID int               .
.                         .

Обязательный субъект:

public class Album
{
    public virtual int AlbumID { get; private set; }
    public virtual string AlbumName { get; set; }
    public List<Song> songs { get; set;}
}

public class Song
{
    public virtual int SongID { get; private set; }
    public virtual int AlbumID { get; set; }
    public virtual string SongTitle { get; set; }
    public virtual int Duration { get; set; }
    public virtual ArtistID { get; set; }
    public virtual ArtistName { get; private set; }      <- from different table, read only
}

Я знаю, что, вероятно, мне следует создать сущность Artists и прикрепить ее к сущности Song, но если в таблице Artists было много столбцов, и все, что мне было нужно, это ArtistName, какой смысл возвращать все дополнительные данные по проводам, когда не будет использоваться или обновляться? Я хочу, чтобы ArtistName только для отображения.

Спасибо, FJ

Ответы [ 3 ]

1 голос
/ 05 января 2010

Попробуйте Ответ Айенде на ваш вопрос, не уверен, что этот код сейчас находится в главной магистрали NHibernate, но он обеспечивает то, что вам нужно.

0 голосов
/ 05 января 2010

Бесполезно отправлять дополнительную информацию по проводам, но почему вы беспокоитесь об этом? Я сомневаюсь, что вы даже сможете измерить разницу, если будете использовать ее в сценарии, отличном от пакета.

«Преждевременная оптимизация производительности - корень всех зол»

0 голосов
/ 05 января 2010

По моему мнению, у вас должна быть сущность Songs и сущность Artists. Получите нужную песню вместе с данными исполнителя и создайте композицию DTO (Data Transfer Object).

SongDTO будет содержать все необходимые вам свойства.

Извлеките необходимые данные и соберите SongDTO для проталкивания провода.

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