Notez que si le suivi des modifications est désactivé sur votre contexte, de demander l' ObjectStateManager
ou ChangeTracker
pourrait revenir que l'objet n'est pas dans l' ObjectContext
cas si elle est en fait déjà là. Par conséquent, si vous essayez de joindre un tel objet, il déclenche une exception.
context.Set<T>.Local.Any(e => e.Id == id);
les œuvres de l'événement si le suivi des modifications est désactivé.
si vous ne connaissez pas le type de l'objet, il y a diverses approche, vous pouvez soit définir une méthode utilisant la réflexion ou à d'autres techniques comme celui-ci
int GetIdOf(object entity){...}
Ou vous pouvez définir une interface utilisée par vos classes comme
public interface IMyEntity
{
int Id{get;set;}
}
et de l'utiliser de cette façon :
context.Set(e.GetType()).Local.Cast<IMyEntity>().Any(e => e.Id == id);