我有个问题。是否可以强制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()方法的带有私有(private)构造函数的类):
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() { }
}

那么,如何在Code First EntityFramework Core中在整个数据库中制作一个Farm

编辑

也许我不会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吗?

最佳答案

也许您需要以一种方式来升级层次结构,因为您有一个数据库,想要一个服务器场,使数据库成为服务器场,而数据库中的所有内容都是单个服务器场的属性。因此,本质上是在编写dbContext.Stables时。在dbContext是服务器场的情况下,马s仅是该服务器场的马s。如果要建立另一个服务器场,请建立另一个数据库

关于c# - Entity Framework 核心单个对象而不是列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54069868/

10-13 08:13