我有一个问题。是否可以强制 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());
我可以从 DBContext
调用我的 Farm.GetFarm() => this.farm
吗?
最佳答案
也许你需要将你的层次结构思维升级一个,因为你有一个数据库,想要一个农场,让数据库成为农场,数据库中的所有东西都是单个农场的属性..因此基本上当你写 dbContext .Stables.Where... dbContext 是农场,马厩永远只是那个农场的马厩。如果你想再做一个农场,再做一个数据库
关于c# - Entity Framework Core 单个对象而不是列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54069868/