Я установил связь 1 к 1, используя код EF, сначала следуя методу, описанному здесь:
Однонаправленные отношения "один-к-одному" в платформе Entity Framework
Мое отображение выглядит следующим образом:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Asset>()
.HasRequired(i => i.NewsItem)
.WithOptional(e => e.Asset)
.Map(m => m.MapKey("NewsItemId"));
}
Но когда я получаю это исключение...
Отношения "Asset_NewsItem" AssociationSet находятся в состоянии "Удалено". Учитывая ограничения множественности, соответствующий "Asset_NewsItem_Source" также должен находиться в состоянии "Удалено".
Всякий раз, когда выполняется этот код:
var entry = _db.NewsItems.Find(id);
entry.Asset = new Asset();
_db.DbContext.SaveChanges();
Я могу заставить работу работать, если я явно отмечу предыдущий Asset, связанный с NewsItem, для удаления, но это просто кажется случайным. Похоже, что на основе сопоставления приведенный выше код должен просто работать... заменять старый Asset новым.
Я что-то делаю неправильно? Есть ли что-то, что мне нужно указать в сопоставлении, которое будет работать правильно? Или это просто способ EF, который нужно удалить, а затем добавить связанные объекты, подобные этому?