EF Générique Référentiel obtenir l'Id de la nouvelle inséré générique de l'entité
Toutes mes entités, Id de propriété. Toutes mes tables dans la base de données a été généré automatiquement entier identité Id comme clé primaire.
J'ai génériques méthode pour Créer des entités.
Est-il un moyen pour obtenir l'Id de l'entité après entité inséré dans la base de données?
public override int Create<T>(T entity)
{
string entitySet = GetEntitySetName<T>();
_context.AddObject(entitySet, entity);
_context.SaveChanges();
return <Id Here>; //TODO Return Id here
}
En simple(non générique) référentiel je peut juste retour de l'Entité.Id, mais la façon d'obtenir le même comportement dans les génériques de référentiel?
J'ai peut-être entité de base de la classe pour toutes les entités qui contient int Id de propriété, mais est-il possible de le faire fonctionner sans la mise en œuvre de cet héritage?
OriginalL'auteur Kuncevič | 2010-08-23
Vous devez vous connecter pour publier un commentaire.
Cet état de fait peut être très simple;
Torturaient mon cerveau sur la façon d'obtenir l'ID de retour pour un long moment jusqu'à ce que je réalise que le code ci-dessus fonctionne. Fonctionne dans Linq-to-SQL et EF4.
OriginalL'auteur Graham
Avec des entités POCO, vous auriez à utiliser une interface, de réflexion, ou
dynamic
.Avec
EntityObject
entités, vous pouvez lire laEntityKey
propriété.OriginalL'auteur Craig Stuntz
La solution:
Où T: type d'entité, TR: entité PK type.
Il y a deux façons de le faire, Si vous souhaitez utiliser des int comme PK dans ce cas, vous devez d'abord insérer un enregistrement vide pour obtenir de nouveaux Identifiant généré par la base de données, sinon c'est que vous pouvez utiliser Guid comme PK, dans ce cas, vous pouvez générer PK est directtly dans votre code en appelant Guid.NewGuid()
s'il vous plaît montrer comment appeler votre
Create()
fonction qui sera de retour PK valeur. merciOriginalL'auteur Kuncevič
OriginalL'auteur Charly Guirao