是否可以映射来自不同数据库表的实体属性?假设你有以下数据模型......
[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
答案 0 :(得分:1)
尝试Ayende's answer来解决您的问题,不确定该代码是否现在位于NHibernate的主干中,但它可以满足您的需求。
答案 1 :(得分:0)
在我看来,你应该有一个歌曲实体和一个艺术家实体。获取您需要的歌曲以及艺术家详细信息并创建歌曲DTO(数据传输对象)。
SongDTO将包含您需要的所有属性。
提取所需数据并组装SongDTO以推送电线。
答案 2 :(得分:0)
通过网络发送额外信息是没有用的,但你为什么担心呢?我怀疑你甚至可以在非批处理场景中使用它时测量差异。
“过早的性能优化是所有邪恶的根源”