EF - Добавить в ассоциацию, установленную Id - PullRequest
4 голосов
/ 30 марта 2011

Скажем, у меня есть отношения многие ко многим:

Song  *---*  Artist

Я сейчас в своем коде, где хочу добавить исполнителя в песню.Я знаю идентификатор художника, но у меня нет экземпляра объекта Artist.

В настоящее время мне нужно сделать что-то вроде:

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

Это включает запрос к БД.

Отношение «многие ко многим» моделируется в виде таблицы:

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

Что бы я хотел сделать из соображений производительности, просто добавить запись в эту таблицу безнужно идти в БД, чтобы загрузить кучу данных сущностей, которые мне не нужны.

Есть ли способ сделать это с EF?Например, такой API:

song.Artists.Add(artistId);

1 Ответ

5 голосов
/ 30 марта 2011

Вы можете использовать фиктивный объект:

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();
...