2016-08-15 29 views
1

私はEntity Frameworkを使用してasp.NETアプリケーションを開発していると私は私のdbo.Sliderテーブルにレコードを作成しようとするたびに、私は次の例外を取得しています:System.Data.SqlClient.SqlException:無効なオブジェクト名「dbo.Slider」

System.Data.Entity.Infrastructure.DbUpdateException:
エントリの更新中にエラーが発生しました。
詳細については、内部例外を参照してください。 --->
System.Data.Entity.Core.UpdateException:
エントリの更新中にエラーが発生しました。
詳細については、内部例外を参照してください。 ---> System.Data.SqlClient.SqlException:
オブジェクト名 'dbo.Slider'が無効です。 ...

で私は、Entity Frameworkサービスを使用しています、私が作成し、自分のコードビハインドフォームを呼び出すこと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()が発生したときに問題が発生していると判断できます。

+2

EFがSQLクエリを実行したデータベースと同じデータベースを指していることを確認してください。そのメソッドをデバッグし、 'DB'オブジェクトをチェックすると、' ConnectionString'を保持する 'Database'プロパティがあります。 – user3185569

+0

はい、まさに他のテーブルと同じです –

+0

@ user3185569私は正しい軌道に乗っています。私はDBをローカルに作成しましたが、アプリケーションはクラウドDBを使用していました。だから問題は実際に私と一緒にweb-configにある間違ったDBを指していました。あなたが望むなら、あなたはそれに答えることができます。 –

答えて

1

私はコメントで述べたように、あなたはあなたがでテーブルを作成したのと同じデータベースを指しているcontextことを確認する必要があります。

あなたは方法CreateSliderをデバッグのしてチェックすることによって、それを行うことができますDBオブジェクトの場合は、Databaseというプロパティがあり、除外するオブジェクトはConnectionStringです。

関連する問題