Création d'une propriété non mappée dans une entité (entity framework)
Je veux créer une propriété personnalisée sur l'une de mes entités mappées à partir de la base de données, mais cette propriété n'est pas mappée à la base de données, j'ai créé la propriété en utilisant des classes partielles mais en essayant de compiler, je reçois une erreur me disant que la propriété n'est pas mappée. Y a-t-il un attribut ou quelque chose que je devrais ajouter? Merci à l'avance.
4 réponses
Utilisez des classes partielles pour ajouter les propriétés ou les méthodes que vous souhaitez ajouter. Par exemple
namespace WhateverNamespaceYourEntityModelIsIn
{
public partial class TheNameOfYourEntity
{
public string MyNewProperty { get; set; }
}
}
Et cela devrait vous faire.
Vous pouvez également marquer votre propriété avec l'attribut [NotMapped]
ou utiliser la méthode Ignore
de l'API fluent.
La Propriété
public class EntityName
{
[NotMapped]
private string PropertyName { get; }
}
API fluide
public class Entities : DbContext
{
public DbSet<EntityType> Users { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// Some database configuration
modelBuilder.Entity<EntityType>()
.Ignore(i => i.PropertyName);
}
}
Je suis sérieusement en retard à la conversation, mais vous voulez aussi marquer le partiel comme sérialisable et la propriété comme sérialisable - si vous prévoyez de JSON ou de sérialiser les objets:
[Serializable()]
public partial class MyClass {
private System.Nullable<int> _Age;
[global::System.Runtime.Serialization.DataMemberAttribute(Order = 4)]
public System.Nullable<int> Age {
...
}
}
Les directives [Serializable()] et [global:] sont nécessaires. Si vous excluez le [global:], chaque fois que vous le sérialisez, il sera ignoré et non inclus dans la sérialisation.
Cette page m'a vraiment aidé. J'ajouterai exactement ce que j'ai ajouté à ma configuration de mappage après avoir vu la réponse de Kniganapolke.
public TheObjectName()
{
this.HasKey(t => t.ID);
this.Ignore(t => t.IsProcess); //we don't want EF to worry about this
}
Merci à tous, merci donc!