Escludere un campo/proprietà del database con Entity Framework 4 & Codice-Primo

Mi piacerebbe sapere che c’è un modo per escludere alcuni campi dal database? Per esempio:

public class Employee
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string FatherName { get; set; }

    public bool IsMale { get; set; }
    public bool IsMarried { get; set; }

    public string AddressAs { get; set; }
}

Come posso escludere il AddressAs campo dal database?

InformationsquelleAutor Yogesh | 2009-11-10

 

4 Replies
  1. 21

    Nella versione attuale l’unico modo per escludere una proprietà è esplicitamente mappa di tutte le altre colonne:

    builder.Entity<Employee>().MapSingleType(e => new {
      e.Id,
      e.Name,
      e.FatherName,
      e.IsMale,
      e.IsMarried
    });

    Perché AddressAs non viene fatto riferimento non è parte dell’Ente /Database.

    La squadra EF è considerando aggiunta di qualcosa di simile a questo:

    builder.Entity<Employee>().Exclude(e => e.AddressAs);

    Ti suggerisco di dire a lasciare un commento su EFDesign blog, la richiesta di questa funzione 🙂

    Spero che questo aiuta

    Alex

    • Ho capito che l’unico modo per farlo, come di oggi, è il modo in cui hai accennato. L’ho pubblicato su EFDesign blog un lungo viaggio di ritorno: blogs.msdn.com/efdesign/archive/2009/10/12/…
    • Sarebbe un vero e proprio bonus se aggiungere un .Exclude()
    • C’è un modo per escludere un determinato campo da tutte le classi in un modello utilizzando il modello T4?
  2. 32

    So che questa è una vecchia questione, ma nel caso che qualcuno (come me) viene dalla ricerca…

    Ora è possibile in entity framework 4.3 per fare questo. Si dovrebbe fare in questo modo:

    builder.Entity<Employee>().Ignore(e => e.AddressAs);
    • O in VB builder.Entity(Of Employee).Ignore(Function(e) e.AddressAs)
    • Questo sarebbe globale? Voglio dire, che cosa se voglio farlo solo per questa chiamata? Posso riaccenderlo, per così dire?
    • Sì, ancora utile. appena mi ha salvato 40 minuti di ricerca.
  3. 0

    È anche possibile aggiungere la colonna che si desidera ignorare come Proprietà Ombra in DbContext:

    builder.Entity<Employee>().Property<string>("AddressAs");

    Quindi è possibile eseguire una query su quella colonna, in questo modo:

    context.Employees.Where(e => EF.Property<string>(e, "AddressAs") == someValue);

Lascia un commento