SqlException:无效的对象名称c#

时间:2018-01-11 07:19:09

标签: c# entity-framework asp.net-core-2.0

我正在尝试连接到我的.net核心2.0网络应用中的localDB。我使用SQL express创建了一个本地数据库。

我的appsettings.json看起来像这样

{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
  "Default": "Warning"
}
},

"ConnectionStrings": {
"DefaultConnection": "Data Source=(LocalDb)\\MSSQLLocalDB;Initial Catalog=Shopping;Integrated Security=True;Connect Timeout=60;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False"
}

}

我的上下文文件如下所示

    public class ProductContext : DbContext
{
    public ProductContext(DbContextOptions<ProductContext> options) 
        :base(options)
    {

    }

    public DbSet<Product> Products { get; set; }
}

我的启动文件传递了这样的上下文

services.AddDbContext<ProductContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

当我尝试从数据库中获取产品时

        try
        {
            var d = await _context.Products.ToListAsync();
            return View(d);

        }
        catch (Exception e)
        {

        }

我抛出了这个异常

  

“无效的对象名称'产品'。”

我也在这里添加我的数据库图像

enter image description here

我假设它与数据库连接有关?

如何提供文件路径?

2 个答案:

答案 0 :(得分:5)

您似乎在数据库中没有表Products

  1. 可能需要使用Model上的表映射属性([Table("Product")])指定不同的表名,或者在数据库上启动迁移/初始化(如果尚未发生)。
  2. 如果连接出现问题 - 错误就是这样,但看起来你直接从sql server收到错误("Invalid object name 'Products'."

答案 1 :(得分:1)

您可以在OnModelCreating的{​​{1}}方法中使用流畅的API来将数据库表与您的模型进行映射。这样您就不需要在模型中添加属性。

ProductContext