EF - 添加到由Id设置的关联

时间:2011-03-30 15:05:23

标签: .net performance entity-framework entity-framework-4 associations

说我有很多关系:

Song  *---*  Artist

我正在我的代码中的一个点,我想在歌曲中添加一个艺术家。我知道艺术家的ID,但我没有Artist实体的实例。

目前我必须做以下事情:

var artist = context.Artists.Single(a => a.Id == artistId);
song.Artists.Add(artist);

这涉及数据库查询。

多对多关系被建模为表格:

SongId | ArtistId
-------+---------

出于性能原因,我想做的只是在这个表中添加一个条目,而不必去DB加载一堆我不需要的实体数据。

有没有办法用EF做到这一点?例如,像这样的API:

song.Artists.Add(artistId);

1 个答案:

答案 0 :(得分:5)

您可以使用虚拟对象:

var song = context.Songs.Single(s => s.Id == songId);
var artist = new Artist { Id = artistId };
context.Artists.Attach(artist);
song.Artists.Add(artist);
context.SaveChanges();