Dre*_*kes 4 .net performance entity-framework associations entity-framework-4
说我有很多关系:
Song *---* Artist
Run Code Online (Sandbox Code Playgroud)
我正在我的代码中,我想在歌曲中添加一个艺术家.我知道艺术家的ID,但我没有该Artist实体的实例.
目前我必须做的事情如下:
var artist = context.Artists.Single(a => a.Id == artistId);
song.Artists.Add(artist);
Run Code Online (Sandbox Code Playgroud)
这涉及数据库查询.
多对多关系被建模为表格:
SongId | ArtistId
-------+---------
Run Code Online (Sandbox Code Playgroud)
出于性能原因,我想做的只是在这个表中添加一个条目,而不必去DB加载一堆我不需要的实体数据.
有没有办法用EF做到这一点?例如,像这样的API:
song.Artists.Add(artistId);
Run Code Online (Sandbox Code Playgroud)
你可以使用虚拟对象:
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();
Run Code Online (Sandbox Code Playgroud)