5

SQLServerExpressデータベースを使用したEntityFramework4.1の操作.mdf

テストの目的で、WPFアプリケーションのエンティティモデルを使用してSQLServerExpressデータベースで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>
4

1 に答える 1

6

ユーザーインスタンスとAttachDbFileName=アプローチ全体に欠陥があります-せいぜい!Visual Studioは.mdfファイルDataDirectoryを(実行中のアプリの出力ディレクトリに)コピーし、ほとんどの場合、正常に動作しますが、最終的には間違ったファイルINSERTを見ているだけです。.mdf

このアプローチを使い続けたい場合は、.SaveChanges()呼び出しにブレークポイントを設定してみてください。次に.mdf、SQL Server MgmtStudioExpressを使用して実行中のアプリのディレクトリにあるファイルを調べてください。データがそこにあることはほぼ間違いありません。

私の意見では、本当の解決策は

  1. SQL Server Expressをインストールします(とにかくすでにそれを実行しています)

  2. SQL Server ManagementStudioExpressをインストールします

  3. SSMS Expressでデータベースを作成し、論理名を付けます(例TestDatabase

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

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

    そして他のすべては以前とまったく同じです...

于 2012-07-18T19:15:41.730 に答える