Escludere un campo / proprietà dal database con Entity Framework 4 e Codice-First
-
19-09-2019 - |
Domanda
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 faccio a escludere il settore AddressAs dal database?
Soluzione
Nella versione attuale l'unico modo per escludere un immobile è di mappare in modo esplicito tutte le altre colonne:
builder.Entity<Employee>().MapSingleType(e => new {
e.Id,
e.Name,
e.FatherName,
e.IsMale,
e.IsMarried
});
A causa AddressAs non viene fatto riferimento non è parte dell'Ente / Database.
Il team di EF è considerando l'aggiunta di qualcosa di simile a questo:
builder.Entity<Employee>().Exclude(e => e.AddressAs);
Vi suggerisco di dire lasciare un commento sul blog EFDesign, chiedendo questa funzione:)
Spero che questo aiuti
Alex
Altri suggerimenti
per riferimento futuro: è possibile utilizzare le annotazioni di dati MSDN EF - primo codice dati NOTE
[NotMapped]
public string AddressAs { get; set; }
So che questa è una vecchia questione, ma nel caso qualcuno (come me) viene dalla ricerca ...
Ora è possibile in Entity Framework 4.3 per fare questo. Si potrebbe farlo in questo modo:
builder.Entity<Employee>().Ignore(e => e.AddressAs);
E 'anche possibile aggiungere la colonna che si desidera ignorare come shadow proprietà nel DbContext:
builder.Entity<Employee>().Property<string>("AddressAs");
Poi si può interrogare su quella colonna in questo modo:
context.Employees.Where(e => EF.Property<string>(e, "AddressAs") == someValue);