Сначала я установил отношение от 1 -до -1, используя код EF, следуя методу, описанному здесь :
. Однонаправленный Один -К -Одно отношение в Entity Framework
Мое отображение выглядит так...
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity()
.HasRequired(i => i.NewsItem)
.WithOptional(e => e.Asset)
.Map(m => m.MapKey("NewsItemId"));
}
Но когда я получаю это исключение...
A relationship from the 'Asset_NewsItem' AssociationSet is in the 'Deleted' state. Given multiplicity constraints, a corresponding 'Asset_NewsItem_Source' must also in the 'Deleted' state.
Всякий раз, когда этот код запускается:
var entry = _db.NewsItems.Find(id);
entry.Asset = new Asset();
_db.DbContext.SaveChanges();
Я могу заставить что-то работать, если я явно отмечу предыдущий актив, связанный с NewsItem, для удаления, НО это кажется немного шатким. Похоже, что на основе сопоставления приведенный выше код должен просто работать... заменив старый ассет на новый.
Я делаю что-то неправильно? Есть ли что-то, что мне нужно указать в сопоставлении, чтобы все работало правильно? Или это просто способ EF удалить, а затем добавить связанные объекты, подобные этому?