J'étais curieux sur un modèle de réutilisation qui était peut-être possible et je voulais voir si d'autres l'avaient essayé. Essentiellement, j'ai par exemple ces EF standards 6.1.3 retours:Pouvez-vous placer un Func <EFContext, TResult> dans un Contexte d'Entités pour le réutiliser?
private IEnumerable<TypeTran> GetTypes()
{
using (var context = new ExpensesEntities())
{
return context.tdType.Select(x => new TypeTran(x.TypeID, x.Description)).Where(x => x.TypeId != 3);
}
}
private List<Category> GetCurrentCategories()
{
using (var context = new ExpensesEntities())
{
return context.tdCategory.Select(x => new Category(x.CategoryID, x.Description)).ToList();
}
}
Ne vous inquiétez pas vraiment de TypeTran ou de la catégorie. Autant dire qu'ils ne sont que des POCO et pourraient être n'importe quoi. Ils ne font qu'abstraire une suppression de couche de EF afin que je puisse avoir plus d'effets après-vente sur un objet Modèle sans affecter les objets générés par T4 à partir de la base de données. Ce modèle fonctionne très bien, mais il y a beaucoup plus de modèles de récupération donc j'étais curieux de savoir si je pouvais faire quelque chose comme:
private TReturn RunContextWithOption<TReturn>(Func<ExpensesEntities, TReturn> func)
{
using (var context = new ExpensesEntities())
{
return func.Invoke(context);
}
}
Mais lorsque je tente de l'exécuter que je fais la syntaxe mal et je suis aussi ne pas voir une manière d'utiliser le contexte sans le pré-définir.
//Wrong won't run
private List<TypeTran> GetTypes()
{
var cont = new ExpensesEntities();
return RunContextWithOption<List<TypeTran>>((cont) => cont.tdType.Select(x => new TypeTran(x.TypeID, x.Description)).Where(x => x.TypeId != 3));
}
Ainsi, il devient le poulet ou l'oeuf, je veux le contexte d'être invoqué auto avec une aide, mais je ne peux pas que je besoin que dans un arg il apparaît. Est-ce que quelqu'un d'autre a essayé quelque chose de similaire pour rendre leur modèle de repo simplement moins de lignes de code? Cela peut être une mauvaise pratique mais je suis généralement pour moins de lignes de code et en utilisant des aides privées autant que possible plutôt que de répéter en utilisant (var contexte ...) ad infinitum.
Vous voulez une méthode générique pour revenir une liste d'entités de type inconnu en transmettant une clause filter/where? – DavidG
Trier par. Dans mon espoir, je pourrais avoir la fonction dire l'objet de contexte comme tdType, teCategory, etc ... Le keep devenant la fonction est acceptée mais mon utilisation est toujours contrecarrée par des choses comme: "Vous ne pouvez pas convertir ceci en ceci". Essentiellement c'est pour un tas de retours 'GetAll' où la seule variable est le type et le type. Parfois, ils peuvent avoir une clause Where, mais pas toujours. – djangojazz
Qu'entendez-vous par "objet généré par l'entité"? Ce n'est pas clair. – DavidG