Нужно ли вручную устанавливать свойства внешнего ключа при изменении связей?

m переход с Linq-to-SQL на Entity Framework (4.4) с использованием Database First с DbContext. Я'Мне интересно, является ли следующее поведение нормальным:

using (var e = new AgendaEntities()) {
    var store = e.Stores.First();
    var office = e.Offices.Create();
    office.Store = store; // Set association
    Console.WriteLine(office.StoreID); // shows Guid.Empty, expected store.ID!
}

В L2S настройкаStore ассоциация с объектом также обновитStoreID ключ. В EF это некажется, что происходит. Это независимо от того, являются ли объекты новыми или загруженными из контекста.

Когда яSaveChanges, он сохраняет правильно иStoreID обновляется, чтобы соответствоватьoffice.ID, но почему это происходит только после сохранения?

Есть ли что-то, что яотсутствует, или теперь я должен синхронизировать внешние ключи вручную?

Решение Редактировать: Это называется фиксацией свойств и используется автоматически сгенерированными прокси. Однако сDbContext это больше не так. В соответствии сэта проблема подключенияэто по замыслу.

Здравствуйте, шаблон DbContext на самом деле негенерировать классы, которые будут использоваться в качестве прокси отслеживания изменений - просто ленивые загрузочные прокси (которые несделать ремонт). Мы приняли это решение, потому что прокси отслеживания изменений сложны и имеют много нюансов, которые могут очень запутать разработчиков. Если вы хотите, чтобы исправление произошло до SaveChanges, вы можете вызвать myContext.ChangeTracker.DetectChanges. ~ EF Team

Альтернатива - позвонитьDbContext.Entry(entity), который будет синхронизировать сущность. Это описано в этой статье:Отношения и свойства навигации под "Синхронизация изменений между FK и свойствами навигации »

Ответы на вопрос(1)

Ваш ответ на вопрос