我有个问题。是否可以强制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/