web-dev-qa-db-fra.com

Le modèle contient-il un champ sans l'ajouter à la base de données?

Dans mon application Asp.NET MVC4, je veux ajouter un champ à mon modèle sans l'ajouter à la base de données.

Sorte d'un champ qui ne vit que dans les instances c # du modèle mais pas dans la base de données elle-même.

Existe-t-il une annotation ou un autre moyen d'exclure le champ de la base de données elle-même?

Je veux dire un objet que je peux lire et écrire en runtime dont la base de données n'a aucune connaissance.

33
Zebedee

Décorez simplement votre terrain/propriété avec [NotMapped].

Par exemple:

public class MyModel
{
    public int Id { get; set; }
    public string Name { get; set; }

    [NotMapped]
    public string Type { get; set; }
}

Voir http://msdn.Microsoft.com/en-us/library/system.componentmodel.dataannotations.schema.notmappedattribute.aspx

66
haim770

Cela dépend du cadre que vous utilisez pour accéder à vos données. Je suppose que c'est Entity Framework. Eh bien, vous pouvez créer une classe partielle avec la propriété que vous souhaitez ne pas mapper à votre base de données.

quelque chose comme

public class Class1
{
    string Text { get; set; }

    int Number { get; set; }
}

public partial class Class1
{
    bool IsSomething { get; set; }
}

mais ce n'est pas conseillé. Plus: Entity Framework: ajoutez une propriété qui ne correspond pas à la base de données

Ou si vous utilisez Code First: Ignorer une propriété de classe dans Entity Framework 4.1 Code First

2
Przemysław Kalita