【发布时间】:2019-01-07 15:32:14
【问题描述】:
我有一个问题。是否可以强制实体框架创建一个类实例而不是(例如)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());
我可以从DBContext 拨打我的Farm.GetFarm() => this.farm 吗?
【问题讨论】:
-
一个ORM是将表映射到实体,而一个表本质上并不意味着只存储一行
-
添加另一个返回 Farms[0] 的属性?
-
查看我的编辑
标签: c# entity-framework design-patterns asp.net-core entity-framework-core