说我有很多关系:
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);
答案 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();