Ho una domanda. È possibile forzare Entity Framework per creare un'istanza di classe anziché (ad esempio) IEnumerable
?
Nel mio database, voglio avere solo una Farm
invece di Farms
. La mia Farm
ha tutte le altre liste che ho menzionato nel mio DBContext:
public class FarmDbContext : DbContext
{
public FarmDbContext(DbContextOptions<FarmDbContext> options) : base(options) { }
public DbSet<Farm> Farms { get; set; } //i want to have one instance of farm
public DbSet<Machine> Machines { get; set; }
public DbSet<Stable> Stables { get; set; }
public DbSet<Worker> Workers { get; set; }
public DbSet<Cultivation> Cultivations { get; set; }
}
E la mia classe Farm, ovvero una Singleton (classe con costruttore privato solo con metodo GetInstance()
):
public class Farm
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public virtual List<Stable> Stables { get; set; }
public virtual List<Machine> Machines { get; set; }
public virtual List<Worker> Workers { get; set; }
public virtual List<Cultivation> Cultivations { get; set; }
public Farm GetFarm() => farm;
private Farm farm;
private Farm() { }
}
Quindi, come creare una Farm
in un intero database in Code First EntityFramework Core?
MODIFICARE
Forse non sarò preciso al 100% con la mia domanda.
Come ottenere una singola istanza di Farm ogni volta, chiamo un contesto? Ad esempio, ho una funzione GET
:
private readonly FarmDbContext _context;
public FarmController(FarmDbContext context) => _context = context;
// GET: api/Farm
[HttpGet]
public IActionResult GetFarms() => Ok(_context.Farms.SingleOrDefault());
Posso chiamare il mio Farm.GetFarm() => this.farm
da DBContext
?
Forse hai bisogno di salire di livello la tua gerarchia pensando da uno, dato che hai un database, vuoi una farm, rendi il database la farm e tutto all'interno del database le proprietà della singola farm .. quindi essenzialmente quando scrivi dbContext.Stables. Dove ... il dbContext È la fattoria, le stalle sono sempre e solo le stalle di quella fattoria. Se si desidera creare un'altra farm, creare un altro database