Comment ajouter de nouvelles propriétés d'entité dans le Cadre de l'Entité, sans changer de modèle de base de données
Je suis nouveau sur Entity Framework. J'ai commencé avec une base de données de la première approche qui a créé mes classes correspondantes aux tables que j'ai sélectionnés. Je suis à l'aide de MVC
. L'un de mes tableaux a une Date
colonne. Mon exigence est que je veux afficher la date dans mon gridview
(Grille MVC), c'est à dire si la Date de cet enregistrement particulier parcourus est 10/27/2015, puis la Journée devrait montrer l'Aut. Je veux faire cela sans l'ajout d'une colonne supplémentaire pour le jour de ma base de données.
Est-il un moyen pour cela. Toute aide sera grandement appréciée.
Ma classe du modèle généré est comme ci-dessous:-
public partial class QnsNew1
{
public int Id { get; set; }
public Nullable<System.DateTime> Date { get; set; }
public Nullable<int> PersonelID { get; set; }
public string CType { get; set; }
public string Comments { get; set; }
//public string Day { get; set; }//I want to avoid doing this
public virtual Personnel Personnel { get; set; }
public virtual Type Type { get; set; }
}
Êtes-vous à l'aide de
Je pense que c'est le point de vue de la responsabilité. Pensez à changer le point de vue, plutôt que d'ajouter des propriétés à l'aide du modèle de classes partielles.
.cshmtl
point de vue? Si oui, je dirais juste de liaison ce qui est de ce point de vue model.Date.DayOfWeek
au lieu de rien ajouter au modèle.Je pense que c'est le point de vue de la responsabilité. Pensez à changer le point de vue, plutôt que d'ajouter des propriétés à l'aide du modèle de classes partielles.
OriginalL'auteur anu | 2015-10-27
Vous devez vous connecter pour publier un commentaire.
Une meilleure approche
Bien que cela peut être fait facilement avec Entity Framework, mais comme souligné par d'autres réponses ici, et je reconnais à 100%, qu'il est préférable de séparer la présentation/UI modèles de modèles de base de données en créant ViewModel séparé de votre routine d'entités et de mettre vos propriétés calculées.
Si vous êtes coincé avec EF, continuez à lire
Dans EntityFramework Première Base de données de mode, les classes générées pour le modèle de base de données sont des classes partielles. Vous pouvez créer une autre classe partielle avec le même nom et la même assemblée et de l'espace de noms et d'ajouter votre propriété calculée.
voici un exemple complet (après avoir emprunté le jour de la semaine de la mise en œuvre de réponses ici):
OriginalL'auteur Bishoy
Créer une classe partielle par le même nom et ont un getter de la propriété a appelé le Jour. Ce ne sera pas ajouter une colonne à votre base de données.
OriginalL'auteur Praveen Paulose
Vous pouvez ajouter un
partial class QnsNew1 { public DayOfWeek Day { get; set; } }
à côté de vos données générées/modèle. Mais je ne serais probablement suggérer que vous vous séparez de votre modèle de données à partir de votre modèle de présentation et c'est une bonne raison. Votre modèle de présentation aura parties qui sont uniquement utilisés à des fins de présentation et sont calculées à la volée alors que votre modèle de données doit juste strictement représenter vos données sont conservées.OriginalL'auteur lanierhall
D'envisager l'utilisation d'un modèle de vue au lieu de modèle créé par entity framework. Je n'ai pas de préférence à l'aide de modèles de base de données dans mon point de vue en raison de la question que vous êtes confrontés. Au lieu de cela j'ai créer un modèle d'affichage, puis copier les données de la base de données de modèle de modèle de vue à l'aide de AutoMapper ou une bibliothèque comme ça.
OriginalL'auteur Sumanth