Sono interessato a come mappare due entità alla stessa tabella, utilizzando prima il codice. Ecco un esempio:Codice EF Prime entità multiple alla stessa tabella
public class User
{
[Key]
public int UserId { get; set; }
public string Name { get; set; }
public byte Age { get; set; }
public bool Active { get; set; }
public DateTime Created { get; set; }
}
public class UserViewModel
{
[Key]
public int UserId { get; set; }
public string Name { get; set; }
public byte Age { get; set; }
}
Fondamentalmente sono stufo di creare repository. Voglio mappare tutti i possibili modelli per il portale di configurazione, il portale utente, altri servizi nel modelbuilder e semplicemente utilizzare DbContext per tutto. Voglio impostare la classe User come parte superiore della gerarchia e una classe che costruisce il database, mentre tutti gli altri modelli dovrebbero essere lì solo per varie applicazioni.
Non voglio usare l'automapper. Ho anche fatto una discreta quantità di codice manuale che ha sprecato il mio tempo, e ogni singola modifica mi richiede di tornare al repository e ricodificarmi - cosa che mi infastidisce.
Ho cercato di utilizzare questo in ModelBuilder, ma mi avverte che la gerarchia non è valido:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<User>().Map(p => { p.ToTable("Users"); });
modelBuilder.Entity<UserViewModel>().Map(p => { p.ToTable("Users"); });
}
Anche tenere a mente che io non sto cercando di realizzare "Tabella splitting". Non voglio che il mio tavolo sia diviso in due entità, voglio piuttosto avere tutte le colonne annullabili, tranne una con chiave primaria, e consentire a diverse applicazioni/servizi web/portali web di popolare quanti più dati sono stati concessi accesso per.
Grazie per tutti i suggerimenti :)
Date un'occhiata al modello repository generico. Tutto ciò di cui hai bisogno è un unico repository di base per tutte le tue entità. Sento il tuo dolore, ho usato un deposito per ogni entità fino a quando ho scoperto il modello di repository generico. – JBeckton