我已经使用SSMS构建了一个SQLExpress数据库,我使用以下命令创建了我的数据库的类模型。
Scaffold-DbContext "Data Source=[Removed]\SQLExpress;Initial Catalog=Warehouse;Integrated Security=True"
Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models –Verbose –Force
除非我更改DBContext
属性的名称以检索实体,否则似乎所有内容都正确创建...以下是我的内容:
DB:我有一个名为"BOX"
的表。这是从Scaffold-DBContext
调用为其创建的类。 ID
在数据库中定义为主键。
public class Box
{
public int Id { get; set; }
public double Height { get; set; }
public double Width { get; set; }
public double Length { get; set; }
}
这是为它创建的DBContext
类:
public class WarehouseContext : DbContext
{
public WarehouseContext(DbContextOptions<WarehouseContext> options)
: base(options)
{
}
public DbSet<Box> Box { get; set; }
}
这是控制器调用我做到了:
public async Task<IActionResult> Index()
{
return View(await _BoxDBContext.Box.ToListAsync());
}
以上所有内容都非常合适,但我不希望我的DBcontext
中要检索框的属性称为Box
。我希望它像Boxes
这样称呼。
public class WarehouseContext : DbContext
{
public WarehouseContext(DbContextOptions<WarehouseContext> options)
: base(options)
{
}
public DbSet<Box> Boxes { get; set; }
}
public async Task<IActionResult> Index()
{
return View(await _BoxDBContext.Boxes.ToListAsync());
}
但是当我更改名称时,它无法正常工作,说明以下错误:
处理请求时发生未处理的异常。
SqlException:无效的对象名称&#39; Boxes&#39;。
System.Data.SqlClient.SqlCommand + LT;&℃。 b__107_0(任务结果)
我多次清理了解决方案,重新启动了机器,但仍然发生错误...
所以我尝试了这个,我添加了一个新属性来返回完全相同的东西,但给它一个不同的名字......所以我现在有Boxes
和TextBoxes
public class WarehouseContext : DbContext
{
public WarehouseContext(DbContextOptions<WarehouseContext> options)
: base(options)
{
}
// I left this method here..
public DbSet<Box> Boxes { get; set; }
// and added this one.
public DbSet<Box> TextBoxes { get; set; }
}
public async Task<IActionResult> Index()
{
return View(await _BoxDBContext.Boxes.ToListAsync());
}
现在可以使用???????
有谁知道为什么会这样?我显然不能这样做..