我有一个问题。是否可以强制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() { }
}
那么如何在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
打电话吗?
答案 0 :(得分:3)
也许您需要将层次结构的思维方式升级一次,因为您有一个数据库,想要一个服务器场,使数据库成为服务器场,而数据库中的所有内容都是单个服务器场的属性。 .stables。在... dbContext是服务器场的情况下,马s仅是该服务器场的马s。如果要建立另一个服务器场,请建立另一个数据库