Я использую EF4 (не с первым кодом) с года, так что я не особо разбираюсь в этом. Я сомневаюсь в использовании отношения "многие ко многим" при сохранении и обновлении.
Я где-то читал в stackoverflow (я больше не могу найти URL), что единственное решение - обновить существующее отношение «многие ко многим» - не объявлять «виртуальное» свойство; но, если я сделаю так, движок не сможет загружать данные как при простой загрузке.
Не могли бы вы объяснить мне причину? Otherwire, не могли бы вы помочь мне найти несколько интересных документов по этой теме?
thx
Ответ Slaumas действительно хорош, но я хотел бы добавить, как вы можете вставить отношение «многие ко многим» без предварительной загрузки объектов из базы данных. Если вы знаете идентификаторы для подключения, то дополнительный вызов базы данных является излишним. Ключ должен использовать Attach()
.
Подробнее о приложении:
https://stackoverflow.com/a/3920217/3850405
public class ConnectBToADto
{
public Guid AId { get; set; }
public Guid BId { get; set; }
}
public void ConnectBToA(ConnectBToADto dto)
{
var b = new B() { Id = dto.BId };
Context.B.Attach(b);
//Add a new A if the relation does not exist. Redundant if you now that both AId and BId exists
var a = Context.A.SingleOrDefault(x => x.Id == dto.AId);
if(a == null)
{
a = new A() { Id = dto.AId };
Context.A.Add(a);
}
b.As.Add(a);
}