c# - 无效的对象名称异常指的是我尚未创建的对象

标签 c# asp.net-mvc entity-framework asp.net-mvc-5

目前,我正在尝试使用 EntityFramework 从数据库中提取信息。因此,我已经连接到正确的数据库:

<add name="ChartConn" connectionString="Data Source=****;Initial Catalog=****;User ID=****;Password=****;" providerName="System.Data.SqlClient" />

其中星号填写了该数据库的正确个人信息。

问题是当我尝试在 Controller 中使用以下内容从该数据库中提取信息时:

public ActionResult Index()
{
    var q = (from c in db.ChannelMaps
            select c.LABEL).ToList();

    return View(q);
}

模型中的以下内容,CHANNELMAP:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Data.Entity;
using System.Linq;
using System.Web;

namespace ChartApp.Models
{
    public class CHANNELMAP
    {
        [Key]
        public int CHANNELNUM { get; set; }
        public int COLUMNID { get; set; }
        public string LABEL { get; set; }
        public string RAWUNITS { get; set; }
        public double? MULT { get; set; }
        public double? ADDER { get; set; }
        public int? DATATYPEID { get; set; }
        public int? OPCODEID { get; set; }
        public decimal? OPVALUE { get; set; }
        public int? SITEID { get; set; }
        public string DASNAME { get; set; }
    }

    public class ChannelMapContext : DbContext
    {
        public ChannelMapContext()
            : base("ChartConn")
        {
            Database.SetInitializer<Models.ChannelMapContext>(null);
        }

        public DbSet<CHANNELMAP> ChannelMaps { get; set; }

    }
}

我收到错误:对象名称 dbo.CHANNELMAPs 无效,它指向 Controller 中 linq 查询的第一行(from c in db.ChannelMaps) 。这很奇怪,因为我的模型的名称是 CHANNELMAP,所以我不确定为什么会收到我未使用过的对象的无效名称的错误。是什么导致了这个错误?我已多次尝试更改模型的名称,并进行三次检查以确保我的连接字符串和属性名称均已相应设置。

最佳答案

默认情况下,EF 在模型中每个实体的末尾添加一个“s”(复数)。要删除它,您只需删除该约定:

 protected override void OnModelCreating(DbModelBuilder modelBuilder)
 {
     modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
 }

Exception Details: System.Data.SqlClient.SqlException: Invalid object name 'dbo.CHANNELMAPs'

此错误意味着 EF 正在将您的 LINQ 转换为使用数据库中不存在的表的 SQL 语句。

检查您的数据库并验证该表是否存在,或者您应该使用不同的表名称。

关于c# - 无效的对象名称异常指的是我尚未创建的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32057969/

相关文章:

c# - 可空日期时间列表到不可空日期时间列表

C# 无法绑定(bind)到目标方法

c# - 如何在 asp.net MVC 中创建 URL 字符串

c# - 使用 Entity Framework 处理自定义字段

.net - Entity Framework 写锁定选择

C#只有一个线程执行

c# - 如果我们使用 NGen.exe 将其编译为 native 代码,C# 是否需要运行 .NET 框架?

javascript - jsTree 无法正确渲染列表?

c# - DataContext 始终返回 null 作为外键

c# - 如何计算 ObjectQuery<T> 将返回多少个对象?