【问题标题】:System.Data.SqlClient.SqlException: Invalid object name 'dbo.Slider'System.Data.SqlClient.SqlException:无效的对象名称“dbo.Slider”
【发布时间】:2016-08-15 08:41:05
【问题描述】:

我正在使用 Entity Framework 开发一个 asp.NET 应用程序,每当我尝试在我的 dbo.Slider 表中创建记录时,我都会收到以下异常:

System.Data.Entity.Infrastructure.DbUpdateException:
更新条目时出错。
有关详细信息,请参阅内部异常。 --->
System.Data.Entity.Core.UpdateException:
更新条目时出错。
有关详细信息,请参阅内部异常。 ---> System.Data.SqlClient.SqlException:
无效的对象名称“dbo.Slider”。在...

我正在使用我创建的名为 efService 的实体框架服务并在我的代码隐藏表单上调用:

protected Services.EFService efService = new Services.EFService();

我尝试在单击按钮时创建滑块,这是我在按钮中断之前使用的代码部分:

slider.DateCreated = DateTime.Now;
slider.Caption = txbPhotoCaptionCreate.Text;
slider.IsPublic = cbxPhotoPublicCreate.Checked;
slider.Path = string.Empty;
slider.ThumbnailPath = string.Empty;
slider.DisplayPath = string.Empty;

int sliderId = efService.CreateSlider(slider);  // It breaks here

这是我制作的CreateSlider efService

public int CreateSlider(Models.EF.Slider slider)
{
    DB.Sliders.Add(slider);
    DB.SaveChanges();

    return slider.Id;
}

这一切都适用于我的其他表,它们具有几乎完全相同的功能。

这是我用来创建 Slider 表的 SQL:

CREATE TABLE [dbo].[Slider] 
(
    [Id]              INT IDENTITY(1,1)  NOT NULL,
    [Caption]         VARCHAR (50)       NOT NULL,
    [Position]        INT                NOT NULL DEFAULT 1,
    [IsPublic]        BIT                NOT NULL DEFAULT 1,
    [Path]            NVARCHAR (250)     NULL,
    [ThumbnailPath]   NVARCHAR (250)     NULL,
    [DisplayPath]     NVARCHAR (250)     NULL,
    [DateCreated]     DATETIME           NOT NULL,

    PRIMARY KEY CLUSTERED ([Id] ASC)
);

没有构建错误,整个应用程序运行良好,除非我尝试为Slider 创建记录。通过大量的调试,我可以断定问题发生在DB.SaveChanges()出现时。

【问题讨论】:

  • 您确定 EF 指向与您执行 SQL 查询的数据库相同的数据库吗?调试该方法并检查DB 对象,它有一个Database 属性,应该包含ConnectionString
  • 是的,就像我的其他桌子一样
  • @user3185569 这让我走上了正轨。我在本地创建了数据库,但应用程序使用的是云数据库。所以问题实际上出在网络配置中,我指向了错误的数据库。如果你愿意,你可以回答。
  • 刚刚回答..
  • 非常感谢 :)

标签: c# asp.net sql-server entity-framework


【解决方案1】:

正如我在 cmets 中所述,您需要确保 context 指向与您在其中创建表的数据库相同的数据库。

您可以通过调试CreateSlider 方法并检查DB 对象来做到这一点,它有一个Database 属性,它应该包含例外的ConnectionString

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多