En fin de compte, je me suis adapté @ réponse de Marc d'ici: C# Linq-SQL: An UpdateByID method for the Repository Pattern
Le résultat est quelque chose comme ceci:
public TModel GetByPrimaryKey(Guid key)
{
// get the row from the database using the meta-model
MetaType meta = _DB.Mapping.GetTable(typeof(TModel)).RowType;
if (meta.IdentityMembers.Count != 1) throw new InvalidOperationException("Composite identity not supported");
string idName = meta.IdentityMembers[0].Member.Name;
var param = Expression.Parameter(typeof(TModel), "row");
var lambda = Expression.Lambda<Func<TModel, bool>>(
Expression.Equal(
Expression.PropertyOrField(param, idName),
Expression.Constant(key, typeof(Guid))), param);
return _DB.GetTable<TModel>().FirstOrDefault(lambda);
}
... où _DB est un DataContext
.
J'espère que cela aidera quelqu'un dans le futur.
merci - J'aurais dû être plus clair depuis le début. Mon objectif est d'utiliser cette information dans une méthode générique "getbyprimarykey". J'ai mis à jour la question. – Remus
@Remus - vérifiez cette réponse SO: http://stackoverflow.com/questions/2958921/entity-framework-4-how-to-find-the-primary-key/3046102#3046102 Pas sûr à 100% si elle le sera travailler avec EF1 cependant. – RPM1984
qui aide. J'ai remarqué que le lien que vous m'avez envoyé utilise un OjbectContext alors que j'ai un DataContext. Des indications sur le portage de la solution au modèle VS généré qui utilise un DataContext? – Remus