Dépannage des conflits de référence d'objet d'entité dans Entity Framework 4.1
L'enregistrement d'une entité Employee
liée à une entité City
dans Entity Framework 4.1 peut parfois générer l'exception : "Un objet entité ne peut pas être référencé par plusieurs instances de IEntityChangeTracker." Cela se produit généralement lors de l'ajout d'entités associées.
Le problème vient de la façon dont les classes EmployeeService
et CityService
gèrent leurs contextes. La ligne payrollDAO.AddToEmployee(e1);
dans EmployeeService
est la coupable. Ici, e1
(l'entité Employee
) est ajouté à un contexte contenant déjà une référence à city1
(l'entité City
liée). Cela crée un conflit car une entité ne peut pas être attachée à plusieurs contextes à la fois.
La solution consiste à garantir que les deux services partagent le même contexte. Cela peut être fait de deux manières :
1. Injection de dépendances :Injecter le contexte dans les constructeurs de services :
<code class="language-csharp">EmployeeService es = new EmployeeService(context); CityService cs = new CityService(context);</code>
Cela garantit que les deux services fonctionnent dans le même contexte, évitant ainsi les conflits.
2. Service consolidé : Créez un service unique, par exemple, EmployeeCityService
, pour gérer à la fois les entités Employee
et City
. Ce service unique utiliserait un seul contexte, éliminant ainsi la possibilité de conflits de contexte. Cette approche favorise une meilleure intégrité des données et simplifie la gestion du contexte.
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!