Entity Framework 4.1 - Override Entité (DBSet) avec Filtre
Je suis en train de faire quelque chose de ce qui devrait être relativement facile, mais je juste ne sais pas comment le construire.
J'ai un Générés Entité que je voudrais remplacer par l'ajout d'une Linq Où la déclaration.
Ci-joint l'partielle pour le Contexte :
public partial class MyEntities: DbContext
{
public MyEntities()
: base("name=MyEntities")
{
}
public DbSet<Assignee> Assignees { get; set; }
}
J'ai créé un nouveau partielle de MyEntities et essayé les
public override DbSet<Assignee> Assignees
{
get
{
return this.Assignees.Where(z => z.IsActive == true);
}
set;
}
mais cela déclenche une erreur d'ambiguïté (ce qui est évident).
Comment puis-je y arriver?
Grâce
OriginalL'auteur Fox | 2012-01-17
Vous devez vous connecter pour publier un commentaire.
Essayer d'exposer
DbSet<Assignee>
etIQueryable<Assignee>
avec des noms différentsEnsuite, vous pouvez modifier manuellement le nom ou donner un nom différent pour
IQueryable<Assignee>
de la propriété.Nice one, il fonctionne parfaitement. Je viens de mettre la DbSet protégé exposer qu'une seule propriété de DbContext pour intellisense pourpose 😉
OriginalL'auteur Eranga
Avez-vous essayé d'ajouter une Condition à la Table de Mappage dans votre modèle? Cliquez-droit sur l'entité dans votre edmx et choisir "Tableau de Mappage". Et puis "Ajouter une condition". Probablement une solution plus élégante.
OriginalL'auteur ryanbakernz
Ce que vous souhaitez?
Pourquoi ne pas créer une classe qui hérite de la génération de code et remplacer le comportement de la propriété?
Trop de changements de code.. j'ai changer beaucoup de code dans mon DAL... bonne idée
Je ne pense pas que vous allez être en mesure de le faire d'une autre manière, puisque vous serait de jouer avec les crochets EF besoins sur les classes.
Il y a peut être une autre façon de faire, et qui est de changer le code EF à l'émet. Voici un article qui l'explique: blogs.microsoft.co.il/blogs/gilf/archive/2009/12/05/...
OriginalL'auteur linkerro
Une bonne pratique est de créer un référentiel des classes dans un DAL dossier(utiliser le nom que vous voulez).
Alors ne les filtres.
Voici un microsoft tutoriel pour que:
http://www.asp.net/mvc/tutorials/getting-started-with-ef-5-using-mvc-4/implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net-mvc-application
En fonction de la condition que vous souhaitez n'est pas possible de mettre sur EF cartographie condition, voici la raison:
http://entityframework.codeplex.com/workitem/48
OriginalL'auteur VINICIUS SIN
Je sais que c'est super vieux, mais d'une autre façon simple et élégante, sans changer les noms, à l'aide de la
new
mot-clé afin de masquer l'origine, comme ceci:Voulais juste partager pour tous les futurs visiteurs, j'espère que ça aide!
OriginalL'auteur Nahuel Prieto