1

私は.mdf DBにこのモデルを持っています:

ここに画像の説明を入力

データのないこれらの 2 つのテーブル:

ここに画像の説明を入力

PersonID は外部キーです。

これは私のEFモデル図です:

ここに画像の説明を入力

そして、これは人を追加するためのコードです。

    namespace DBTest
{
    class Class1
    {
        MyDBEntities db;
        public Class1()
        {
            db = new MyDBEntities();
            AddPerson();
        }        


        void AddPerson()
        {
            Person p = new Person();
            p.ID=1;
            p.NAME="abcd";
            db.AddToPerson(p);
            db.SaveChanges();
        }
    }
}

メインからクラスを呼び出した後:

    namespace DBTest
{
    class Program
    {
        static void Main(string[] args)
        {
            Class1 a = new Class1();
        }
    }
}

.mdf DB に変更があるかどうかを確認したい。
データベースがまだ空であることがわかりました(更新後):

ここに画像の説明を入力

データベースを更新するために何をする必要があるか知っている人はいますか? 私は何を間違っていますか?

編集:

接続文字列:

    <connectionStrings>
    <add name="DBTest.Properties.Settings.XXXXConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\XXXX.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient" />
    <add name="MyDBEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\MyDB.mdf;Integrated Security=True;User Instance=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>
4

1 に答える 1

3

接続文字列は表示されませんでしたが、報告された「症状」から推測しています。

User Instance と AttachDbFileName=のアプローチ全体に欠陥があります - せいぜい! .mdfVisual Studio でアプリを実行すると、ファイルが (App_Dataディレクトリから出力ディレクトリ (通常.\bin\debugはアプリが実行される場所) に) コピーされ、ほとんどの場合、問題なく動作しますが、間違ったINSERTものを見ているだけです。最後にmdfファイル

このアプローチに固執したい場合は、myConnection.Close()呼び出しにブレークポイントを設定してみてください。次に.mdf、SQL Server Mgmt Studio Express でファイルを調べてください。データがそこにあることはほぼ確実です。

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

  1. SQL Server Express をインストールします (とにかく、既に完了しています)。

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

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

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

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

    そして、それ以外はすべて以前とまったく同じです...

于 2013-04-14T19:57:34.890 に答える