in ASP .NET MVC 3 con Entity Framework, ho un oggetto di dominio che ha una proprietà di navigazione fa riferimento a un altro oggetto, come segue:Come aggiornare le proprietà di navigazione di un'entità in Entity Framework
public class Person
{
public String Name {get;set;}
public Guid CompanyID{get;set;}
[ForeignKey(CompanyID)]
public virtual CompanyType Company{ get; set; }
}
Quando creo un'istanza di Person e prova ad aggiungerla al database, il DBContext mantiene una cache di questa entità 'Person' e la invia al database. Quindi, più avanti nella vita della stessa istanza di contesto, quando provo ad accedere a questa entità, il campo Società è sempre nullo poiché la proprietà di navigazione non è mai stata aggiornata.
C'è un modo per aggiornare la proprietà di navigazione con ciò che esiste nel database?
Il caricamento lento è attivato.
Ciò richiede che il programma carichi esplicitamente ogni proprietà di navigazione esistente. C'è un modo per implementare qualcosa di più basilare, per ricaricare tutte le proprietà di navigazione per qualsiasi voce di entità? Ho provato la funzione Reload per DbEntityEntry ma non sembra funzionare. – daniely
@daniely: No, non è possibile. L'unico modo con un singolo rountrip DB sarebbe quello di utilizzare il caricamento ansioso con più 'Includi' per caricare tutte le proprietà di navigazione. Ma questo dovrebbe caricare anche l'entità genitore e devi scrivere manualmente 'Include's per tutte le proprietà di navigazione. – Slauma
@Slauma Quando si utilizza context.People.Include (p => p.NavProp1) .Include (p => p.NavProp2) Posso caricare a catena diverse proprietà di navigazione, creando un singolo hit nel DB. Esiste un modo simile per caricare diverse proprietà di navigazione con context.Entry (person) .Reference (...)? Non riesco a capire un modo per specificare tutte le proprietà del navigatore, quindi posso chiamare solo Load() una volta. –