Сначала я использую код EF 4.3. У меня есть отношения многие ко многим. Я пытаюсь в коде присоединить и сохранить мои связанные записи из массива идентификаторов. В идеале я не хочу загружать эти связанные объекты, прежде чем сохранить их ...
Вот моя модель - Установщики могут иметь много MasterInstances:
public class MasterInstance
{
public int MasterInstanceId { get; set; }
[Required] public string HostName { get; set; }
[Required] public string Name { get; set; }
[Required] public string ConnectionString { get; set; }
public virtual ICollection<MasterInstanceLocation> MasterInstanceLocations { get; set; }
public ICollection<Installer> PermittedInstallers { get; set; }
}
public class Installer
{
public int InstallerId { get; set; }
[Required] public string UserName { get; set; }
[Required] public string Password { get; set; }
public ICollection<MasterInstance> PermittedMasterInstances { get; set; }
}
В своем коде я пытаюсь прикрепить master instances
к installer
:
installer.PermittedMasterInstances = new List<MasterInstance>();
foreach (var permittedMasterInstanceId in installerModel.SelectedMasterInstances)
{
var masterInstance = new MasterInstance {MasterInstanceId = permittedMasterInstanceId};
context.MasterInstances.Attach(masterInstance);
installer.PermittedMasterInstances.Add(masterInstance);
}
context.Entry(installer).State = EntityState.Modified;
context.SaveChanges();
Но .. В таблицу ссылок ничего не пишется :( Есть идеи почему?
EDIT
Единственное, что работает, это довольно неприятное решение ... Это единственный способ?
foreach (var permittedMasterInstanceId in installerModel.SelectedMasterInstances)
{
var masterInstance = context.MasterInstances.Single(mi => mi.MasterInstanceId == permittedMasterInstanceId);
masterInstance.PermittedInstallers = new List<Installer>();
context.MasterInstances.Attach(masterInstance);
masterInstance.PermittedInstallers.Add(installer);
installer.PermittedMasterInstances.Add(masterInstance);
}