J'utilise Entity Framework 4.0 entité POCO Je cartographié procédure stockée personnalisée sur insert PROCEDURE [dbo]. [Usp_MyTable_Insert] ( @ valeur1 char (1), @ Valeur2 varchar (5), @ Value3 varchar (20) .... ) AS BEGIN TRANSACTION INSERT INTO "dbo". "MyTable" ( "valeur1", "Valeur2", "Valeur3" ) VALEURS ( @ Valeur1, Valeur2 @, @ Value3 )EF 4.0 Entité ne choisit pas de nouvelles valeurs après insertion (entité select après insertion)
DECLARE @Id int --get la dernière Id. SET @Id = (SELECT CAST (@@ IDENTITY AS INT))
--update la table avec les valeurs des UPDATE "dbo". "MyTable" SET Value3 = (SELECT SomeTableColumn OU DE SomeTable quelque chose = quelque chose ) OÙ [Id] = @Id
COMMIT TRANSACTION
SELECT @Id AS "Id"
FIN
Il insère l'entité dans la base de données, puis met à jour certaines des colonnes de la base de données puis retourne l'identité. Tout est assez simple.
public int InsertRecord (RecEntity recEntity) { context.AddObject ("RecEntities", recEntity);
context.SaveChanges();
return recEntity.Id;
}
L'insertion de la méthode fonctionne bien. Ensuite, j'ai besoin de mettre à jour l'entité actuelle avec les valeurs que la procédure stockée insérée. J'ai méthode dans mon référentiel pour récupérer des données
publique RecEntity SingleRecEntity (Expression> où) { retour context.RecEntities.Single (où); } Lorsque j'appelle cette méthode, les valeurs de valeurs insérées par la procédure stockée ne viennent pas à l'entité.
id = repository.InsertRecord (recEnntity); recEntity = repository.SingleBrokerPreRegistration (x => x.Id == id); // les nouvelles valeurs ne sont pas venues ici de la base de données
Je lance la requête générée par le framework d'entité dans l'analyseur de requêtes, il retourne toutes les valeurs à jour. Mais pour une raison quelconque, datacontext ne veut pas mettre à jour cette entité.
Probablement il devrait y avoir quelques façons de changer cela. Peut être quelqu'un peut expliquer ce comportement. Besoin d'aide.