Preciso definir propriedades de chave estrangeira manualmente quando altero as associações?

Estou migrando do Linq para o SQL para o Entity Framework (4.4), usando o Database First com um DbContext. Eu estou querendo saber se o seguinte comportamento é normal:

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!
}

Em L2S, definindo oStore associação a uma entidade também atualizariaStoreID chave. Na EF, isso não parece estar acontecendo. Isso ocorre independentemente de as entidades serem novas ou carregadas do contexto.

Quando euSaveChanges, salva corretamente e oStoreID é atualizado para corresponderoffice.ID, mas por que isso só acontece após o salvamento?

Há algo que estou perdendo ou agora devo manter as chaves estrangeiras em sincronia manualmente?

Edição da Solução: Isso é chamado de correção de propriedade e costumava ser feito automaticamente pelos proxies gerados. No entanto, comDbContext isso não é mais o caso. De acordo comeste problema do Connect, isso é por design.

Olá, O modelo DbContext, na verdade, não gera classes que serão usadas como proxies de rastreamento de alterações - apenas proxies de carregamento lento (que não consertam). Tomamos essa decisão porque os proxies de rastreamento de mudança são complexos e têm muitas nuances que podem ser muito confusas para os desenvolvedores. Se você quiser que o reparo ocorra antes de SaveChanges, você pode chamar myContext.ChangeTracker.DetectChanges. ~ EF Team

Uma alternativa é ligarDbContext.Entry(entity), que irá sincronizar a entidade. Isso está descrito neste artigo:Relacionamentos e Propriedades de Navegação em "Sincronizando as alterações entre as propriedades FKs e Navegação"

questionAnswers(1)

yourAnswerToTheQuestion