2016-06-13 9 views
0

単純なlinq挿入クエリを実行しようとするとエラーが発生します。Entity Framework 5 Linq挿入クエリ:操作が無効です

例外:オブジェクトの現在の状態のため、操作が無効です。ここで

は私のLINQクエリです:私は、このメソッドを呼び出すところ

private void addEntry(string hqname, string hqaddress, string hqcity, 
         int hqzip, string hqstate, string hqcountry) 
{ 
    using (var db = new dbcontext()) 
    { 
     try 
     { 
      var dbObj = new dbObj(); 
      dbObj.HQName = hqname; 
      dbObj.HQAddress = hqaddress; 
      dbObj.HQCity = hqcity; 
      dbObj.HQZip = hqzip; 
      dbObj.HQState = hqstate; 
      dbObj.HQCountry = hqcountry; 
      db.tblName.Add(dbObj); 
      db.SaveChanges(); 
     } 
     catch 
     { 
      throw new InvalidOperationException(); 
     } 
    } 
} 

、ここです:

addCompanyHeadquarters(tbCompanyName.Text, addressInput.HQAddress, addressInput.HQCity, Convert.ToInt32(addressInput.HQZip), addressInput.HQState, "United States"); 

スタックトレース:

[InvalidOperationExceptionが:操作は有効ではありませんオブジェクトの現在の状態のためです。] addComp System.Web.UI.WebControls.Button.OnClick(のEventArgs e)の9692746 中をbutton3_Click(オブジェクト送信者、のEventArgs電子)にanyHeadquarters(文字列hqname、文字列hqaddress、文字列hqcity、のInt32 hqzip、文字列hqstate、文字列hqcountry) System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)+108 System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)+12 System.Web.UI。 Page.RaisePostBackEvent(IPostBackEventHandler sourceControl、文字列eventArgument)15 System.Web.UI.Page.RaisePostBackEvent(NameValueCollectionのPOSTDATA)35 System.Web.UI.Page.ProcessRequestMain(ブールincludeStagesBeforeAsyncPoint、ブールのincludeStagesAfterAsyncPoint)3562

私はこれをしばらくの間デバッグしようとしていましたが、このエラーは本当にループを起こしています。私は次に何を調べるべきか分からない。前進するためのヒントは非常に高く評価されています。 Egor Semenenkoのアドバイスから、私は私が投げる例外を変更し、コメントを追加しました:いくつかの情報は:私は更新がStoredGeneratedPattern: True

それぞれのテーブルやカラムに対してedmxファイルを変更した後、私はその後、自動インクリメントとするIDデータベース列を更新しましたスロー;: HERESに私の新しいスタックトレース: エンティティタイプは、現在のコンテキストのためのモデルの一部ではない [InvalidOperationExceptionが:エンティティタイプのtblName現在のコンテキストのためのモデルの一部ではありません。]

System.Data.Entity.Internal.InternalContext.UpdateEntitySetMappingsForType(Type entityType) +196 
    System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType) +38 
    System.Data.Entity.Internal.Linq.InternalSet`1.Initialize() +52 
    System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext() +15 
    System.Data.Entity.Internal.Linq.InternalSet`1.ActOnSet(Action action, EntityState newState, Object entity, String methodName) +64 
    System.Data.Entity.Internal.Linq.InternalSet`1.Add(Object entity) +108 
    System.Data.Entity.DbSet`1.Add(TEntity entity) +42 
    addCompanyHeadquarters(String hqname, String hqaddress, String hqcity, Int32 hqzip, String hqstate, String hqcountry) in 
    Button3_Click(Object sender, EventArgs e) 
    System.Web.UI.WebControls.Button.OnClick(EventArgs e) +9692746 
    System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +108 
    System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +12 
    System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +15 
    System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +35 
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3562 
+0

IDを自動インクリメントに更新して修正しましたか?また、あなたはこのオブジェクトのFK関係を逃していますか? –

+0

列を自動インクリメントに更新しても残念なことに修正されず、プライマリキーとして設定されています。 – yoprogrammer

+0

実際の例外は途中で失われます。私はそれを修正する必要があると思いますので、おそらく修正を加えて展開します。あなたがtry/catchブロックを削除して最初に始めないのは無駄なのですか?その後、実際のエラーが表示されます。NULL制約、一意制約違反など –

答えて

0

実際の例外は何ですか? try catchを使用していて、独自のInvalidOperationExceptionをスローするので、実際のInvalidOperationExceptionは表示されません。 オブジェクトの現在の状態のため、操作が無効です。InvalidOperationExceptionの一般的なエラーメッセージです。

+0

残念ながら、私の環境がセットアップされている方法私はサーバー側をデバッグすることができず、投げられた実際の例外を見ることができます。これはウェブフォームであり、ブラウザ内のページを表示するだけです。このため、この問題はデバッグするのが難しく、うんざりです! : – yoprogrammer

+0

私の例外をコメントアウトすると、私は次のページに期待どおりにリダイレクトされました – yoprogrammer

+0

未処理のSQLクエリを実行しようとしました。 – yoprogrammer

0

皆さん、ありがとうございます。私たちはこの問題を解決しました.ssdlファイルの中で、エンティティセットはデータベースカラムをエンティティにマップするためのものではありませんでした。

関連する問題