Entity Framework Core один объект вместо списка - PullRequest
0 голосов
/ 07 января 2019

У меня есть вопрос. Можно ли заставить 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?

1 Ответ

0 голосов
/ 07 января 2019

Возможно, вам нужно выровнять свое иерархическое мышление на единицу, поскольку у вас есть одна база данных, вы хотите одну ферму, сделайте базу данных фермой, а все, что находится внутри базы данных, свойствами одной фермы ... таким образом, по сути, когда вы пишете dbContext .Stables.Where ... dbContext - это ферма, конюшни - это только конюшни этой фермы. Если вы хотите создать другую ферму, создайте другую базу данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...