L'actualisation de l'instance d'entité avec DbContext
Avec EF4 CTP5 DbContext, ce qui est l'équivalent de ce
public void Refresh(Document instance)
{
_ctx.Refresh(RefreshMode.StoreWins, instance);
}
J'ai essayé cela, mais il ne fait pas la même chose, la mise à jour de l'instance
public void Refresh(Document instance)
{
_ctx.ChangeTracker.DetectChanges();
}
?
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser ce:
Le ci-dessus ne fonctionne pas. Reload() la méthode n'est pas correctement actualisation de l'entité de la base de données. Il exécute la requête SQL de type select, mais ne permet pas de créer des proxies pour les propriétés de navigation. Voir l'exemple ci-dessous (j'utilise la base de données dans SQL Server avec EF 5.1):
Je peut conclure qu'un véritable "rafraîchir" de EF entité peut être fait en Détacher + Trouver:
Nakov
You use the constructor of your POCO class to create a new Product object and thus it will not be proxy. You should use the DbSet.Create method in order to get proxy. When you detach the entity from the context and load it from the database with the Find method, Entity Framework will create a proxy for the entity. That's why it works with Detach+Find. However, DbEntityEntry.Reload method will not refresh the relationships of the entity.
J'ai trouvé que le rechargement échoue sur proxy entités qui ont des propriétés de navigation.
Pour contourner ce problème, réinitialisez les valeurs actuelles et les recharger ensuite comme ceci: