J'ai été à la recherche d'une solution toute la journée, mais je ne pouvais pas trouver si ici, je suis à la recherche d'aide.Comment insérer en bloc dans Entity Framework v4?
J'ai trois tables pour enregistrer les groupes & leurs contacts dans ma base de données. Par souci de simplicité, considèrent que leur nom table_1, table_2 & table_3
table_1 (groupe Table)
+----------+------+
| Group_Id | Name |
+----------+------+
| 1 | A |
| 2 | B |
| 3 | C |
+----------+------+
table_2 (Contact Table):
+------------+-------+--------+
| Contact_Id | name | number |
+------------+-------+--------+
| 1 | Jack | 123 |
| 2 | Sam | 456 |
| 3 | Alice | 789 |
+------------+-------+--------+
table_3 (Tableau de jonction)
+-----------------+----------+------------+
| ContactGroup_Id | Group_Id | Contact_Id |
+-----------------+----------+------------+
| 1 | 1 | 1 |
| 2 | 2 | 2 |
| 3 | 2 | 3 |
+-----------------+----------+------------+
Maintenant, je lis le fichier Excel dans mon application web et t lors de l'ajout de contacts en masse à la base de données. En utilisant EF4, ce que je suis en train de faire:
using (TransactionScope obj = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted, Timeout = TransactionManager.MaximumTimeout }))
{
for (int i = 1; i < totalrows; i++)
{
table_2 objTable_2 = new table_2();
objTable_2.name = "ABC";
objTable_2.number= "999";
entity.table_2.AddObject(objTable_2);
entity.SaveChanges();
table_3 objTable_3 = new table_3();
objTable_3.Group_Id = "1";
objTable_3.Contact_Id = objTable_2.Contact_Id;
entity.table_3.AddObject(objTable_3);
entity.SaveChanges();
}
}
Maintenant, comme vous pouvez le voir, je dois appeler entity.SaveChanges()
chaque fois pour obtenir le PK de table_2
généré automatiquement à insérer dans table_3
. Faire cela pour des centaines ou des milliers d'enregistrements ralentit vraiment mon application et je sais que c'est une mauvaise façon de le faire.
Y a-t-il d'autres solutions pour cela? si je le fais en utilisant une extension d'insertion en bloc tierce ou en appelant SaveChanges()
après tous les quelques centaines d'enregistrements alors comment puis-je obtenir PK PK table_2
pour insérer dans table_3
?
Est-ce que vous avez un coup d'oeil à ma réponse mise à jour? Envisager de le marquer comme solution si cela a aidé – bsoulier