2012-07-18 6 views
5

SQL Server Express .mdfデータベースでEntity Framework 4.1を操作する。Entity Framework 4.1でSQL Server Expressデータベースに行が追加されない

テスト目的のために、WPFアプリケーションでEntity Modelを使用してSQL Server Expressデータベースに対してCRUD操作を実行しようとしています。

私はこのコンセプトに新しいです、と私はビデオチュートリアルを踏襲して、私は、単一の非常に単純なテーブルのエンティティモデルを作成し

ことによる符号化完了です。そして、私は次のコードを使用してデータベースに1行を追加し実行するためにCSファイルに簡単なコードを書いた

testEntities db = new testEntities(); 
TestTable tb = new TestTable(); 
tb.Name = txtName.Text; 
tb.Email = txtMail.Text; 
db.TestTables.AddObject(tb); 
db.SaveChanges(); 

しかし、私は戻って何のデータが追加されていないデータベースを確認した場合。ここで何がうまくいかないのか教えてください。せいぜい -

そしてここでは、私の接続文字列

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <connectionStrings> 
    <add name="testEntities" 
     connectionString="metadata=res://*/DBModel.csdl|res://*/DBModel.ssdl|res://*/DBModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\SQLEXPRESS;attachdbfilename=|DataDirectory|\test.mdf;integrated security=True;connect timeout=30;user instance=True;multipleactiveresultsets=True;App=EntityFramework&quot;" 
     providerName="System.Data.EntityClient" /> 
    </connectionStrings> 
</configuration> 
+0

@marc_s 前とまったく同じです。どこに間違っている – panindra

+0

何かエラーメッセージが表示されますか?あなたは何が起こっているかを見るためにステップバイステップでアプリケーションをデバッグしようとしましたか?デバッガはあなたの親友です。使い方を学んでください。表示されたコードは大丈夫だと思います。ハンドラーや同様のものでさえも忘れてしまったように、別の場所に問題があると思います。 – walther

+0

@waltherevenエラーは表示されません。私はそれをキャッチしようとしました。それはOKです – panindra

答えて

6

全体ユーザーインスタンスとAttachDbFileName =アプローチには欠陥です! Visual Studioはうまく、(実行中のアプリの出力ディレクトリへDataDirectoryから).mdfファイルと最も可能性の高いの周りにあなたのINSERT作品をコピーされます - しかし、あなただけの最後に間違っ.mdfファイルを見ています!あなたのデータがある私はほとんど確信している - あなたは、このアプローチに固執する場合

、その後、.SaveChanges()呼び出しにブレークポイントを入れてみてください - して、SQL ServerのMgmt(仮想ディスクの管理)StudioのExpressで実行しているアプリケーションのディレクトリに.mdfファイルを検査。私の意見では

真の解決策は、SQL Server Expressをインストールし

  1. になり

  2. SQL Server Management StudioのExpressをインストール

  3. (そして、あなたはすでにやったとにかくその)
  4. データベースをSSMS Expressに作成し、論理名を付けてください(例:TestDatabase

  5. 論理名データベース名(サーバーに作成するときに指定します)を使用して接続し、物理データベースファイルとユーザーインスタンスを混乱させないでください。その場合は、接続文字列は次のようになります:

    Data Source=.\\SQLEXPRESS;Database=TestDatabase;Integrated Security=True 
    

    をし、他のすべては...私は質問を更新し、接続文字列を追加した

+0

あなたの提案のためのthansk .iは再びフォームのスクラッチを試みます – panindra

+1

私はこの分析に同意します。私はSSEにmdfsを付けることが嫌い、それは奇妙な問題を引き起こす可能性があります。私はSSMSでSSE DBを作成します。これは、あなたが完全にSQL Serverを使用した場合と同様に、.mdfを使用せずにその形式の接続文字列を使用します。それは頭痛の軽減につながります。 – GrayFox374

関連する問題