У меня есть вопрос. Можно ли заставить Entity Framework сделать один экземпляр класса вместо (например) IEnumerable
?
В моей базе данных я хочу иметь только один Farm
вместо Farms
. В моем Farm
есть все остальные списки, которые я упоминал в моем 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; }
}
И мой класс Farm, это Singleton (класс с закрытым конструктором только с методом 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() { }
}
Так как сделать один Farm
во всей базе данных в Code First EntityFramework Core?
EDIT
Может быть, я не на 100% точен с моим вопросом.
Как получить один экземпляр Farm каждый раз, когда я называю контекст? Например, у меня есть функция GET
:
private readonly FarmDbContext _context;
public FarmController(FarmDbContext context) => _context = context;
// GET: api/Farm
[HttpGet]
public IActionResult GetFarms() => Ok(_context.Farms.SingleOrDefault());
Могу ли я позвонить своему Farm.GetFarm() => this.farm
с DBContext
?