49 votes

Comment ne pas persister le code de la propriété EF4 d'abord ?

Comment créer des propriétés non persistantes en utilisant codefirst EF4 ?

MS dit qu'il existe un attribut StoreIgnore, mais je ne le trouve pas.

http://blogs.msdn.com/b/efdesign/archive/2010/03/30/data-annotations-in-the-entity-framework-and-code-first.aspx

Existe-t-il un moyen de configurer cela en utilisant EntityConfiguration ?

62voto

Matt Frear Points 6287

Dans EF Code-First CTP5, vous pouvez utiliser l'option [NotMapped] annotation.

using System.ComponentModel.DataAnnotations;
public class Song
{
    public int Id { get; set; }
    public string Title { get; set; }

    [NotMapped]
    public int Track { get; set; }

4voto

Rob Kent Points 3133

Actuellement, je connais deux façons de le faire.

  1. Ajoutez le mot clé "dynamic" à la propriété, ce qui empêche le mappeur de la persister :

    private Gender gender;
    public dynamic Gender
    {
        get { return gender; }
        set { gender = value; }
    }
  2. Remplacez OnModelCreating dans DBContext et remappez le type entier, en omettant les propriétés que vous ne voulez pas faire persister :

    protected override void OnModelCreating(System.Data.Entity.ModelConfiguration.ModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
        modelBuilder.Entity<Person>().MapSingleType(p => new { p.FirstName, ... });
    }         

En utilisant la méthode 2, si l'équipe EF introduit Ignore, vous pourrez facilement changer le code en :

     modelBuilder.Entity<Person>().Property(p => p.IgnoreThis).Ignore();

1voto

Henk Holterman Points 153608

Je ne suis pas sûr que cela soit encore disponible.

Sur ce Page MSDN l'attribut Ignore et l'API sont décrits mais ci-dessous, dans les commentaires, quelqu'un écrit le 4 juin 2010 :

Vous serez en mesure d'ignorer les propriétés dans la prochaine version de Code First,

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X