2009-05-01 8 views
1

私はこのエラーを取得していたデータベースにいくつかの項目を追加しようとしている:ASP.NET MVC:どのように(ADO.NETエンティティデータモデル上)のSaveChangesによって実行されたクエリを表示する

UpdateException was unhandled by user code
An error occurred while updating the entries. See the InnerException for details.

InnerExceptionには次の内容が含まれています:

私が追加しようとしているオブジェクトに何も間違っているとは限りません。
問題の原因となるクエリを表示する方法はありますか?

メソッドのコードは、必要に応じて:

[AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult LaadVerrichtingenIn() { 
     int[] intArray = Array.ConvertAll<String, int>(Request.Form["selectedObjects"].Split(','), new Converter<String, int>(Convert.ToInt32)); 
     List<Verrichting> gekozenVerrichtingen = new List<Verrichting>(); 

     foreach(int i in intArray){ 
      base._entities.AddToVerrichtingSet(((Dictionary<int, Verrichting>)Session["ingelezenVerrichtingen"])[i]); 
      gekozenVerrichtingen.Add(((Dictionary<int, Verrichting>)Session["ingelezenVerrichtingen"])[i]); 
     } 
     Session["ingelezenVerrichtingen"] = null; 
     base._entities.SaveChanges(); //Exception occurs here 

     return View("IngeladenVerrichtingen"); 
    } 

base._entitiesは、ADO.NETエンティティデータモデルです。

おかげ

答えて

1

私は、Entity Frameworkを使用してこれを行うには「すっきり」方法があるかどうかわからないんだけど、あなたは、SQL Serverを使用しているならば、私は一般的にされたクエリを読み取ることSQL Server Profilerを使用したいですサーバーに対して実行されます。別のデータベースを使用している場合は、同等のものが存在する可能性があります - いずれにしても、私たちにご連絡いただければ多分役立つでしょう。

MySQL> 5.0.37を使用している場合は、新しいquery profiler機能が追加されました。これにより、送信されるクエリが表示されるはずです。

+0

答えてくれてありがとう残念ながら私は、SQL Serverを使用していないよ:

ところで、私は次のコード行は、問題を回避しますことを見出しました。 私はMySQLサーバーを使用しています。 ここでクエリログにどのようにアクセスできるかを調べます。 –

+0

mysqlのSQLプロファイラへのリンクを使用して回答を更新しましたが、あなたがプロファイルしたいセッションからプロファイリングを有効にするコマンドを発行する必要があるようですが、EFを行う必要があるかもしれませんそれは手作業による質問です。他の方法については、http://stackoverflow.com/questions/20263/is-there-a-profiler-equivalent-for-mysqlも参照してください。 – Whisk

0

SQL Serverを使用している場合は、SQL Serverプロファイラが正常に動作します。 Entity Framework内ではToTraceStringメソッドを使用できます。

+0

私は自分のコードでそれをどのように使うことができるのか分かりません。この例では、自分で書き込んだクエリに対してのみ使用する方法を示しています。 私は.NETフレームワーク全体の初心者ですので、何かを見落としている可能性があります:) エンティティ変数でそのメソッドをどのように使用でき、クエラー(y)を抽出できるかの例を教えてください実行されるでしょうか? –

+0

あなたはそうです。これは選択のみであり、挿入/更新/削除ではありません。 –

0

Entity FrameworkとMySQLを使用してデータを挿入する際に、同じ問題が発生しました。私の勘違いは、doubleの値を使用しているので、小数点の区切り記号 "、"がフィールド区切り記号として誤って解釈されているためです。私はConnector 6.1.0にアップグレードしましたが、まだ運がありません。おそらくこれもあなたの場合に起こっているでしょう。

thisバグレポートを確認してください。

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); 
関連する問題