Prévention des conflits de références d'entité dans Entity Framework 4.1
Entity Framework peut générer une exception « Un objet d'entité ne peut pas être référencé par plusieurs instances de IEntityChangeTracker ». Cela se produit lorsque différents contextes tentent de gérer simultanément la même entité. Cela se produit généralement lors de l'enregistrement d'une entité avec des objets associés chargés à partir de contextes distincts.
Le problème :
Imaginez des services distincts, comme EmployeeService
et CityService
, chacun créant son propre contexte Entity Framework. Si CityService
charge une ville et EmployeeService
ajoute plus tard cette même ville à un employé, un conflit survient car la ville est suivie par deux contextes différents.
La solution :
La clé est d’utiliser un contexte unique et partagé. Injectez ce contexte dans les deux services :
<code class="language-csharp">var context = new YourDbContext(); // Create the context once EmployeeService es = new EmployeeService(context); CityService cs = new CityService(context); // Both services use the same context</code>
Une solution plus élégante pourrait consister à consolider les entités associées en un seul service. Par exemple, au lieu de EmployeeService
et CityService
, créez un EmployeeCityService
. Cela simplifie la gestion du contexte et évite les conflits.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!