2016-07-25 14 views
0

私はLinqにとってとても新しいです。私はキャッシュの問題だと思っています。私がグーグルで行った "キャッシュをクリアする"トリックはうまくいきませんでした。基本的に、Visual Studioでstartをクリックするとレコードが追加され、Linqの結果にエコーされます。しかし、実行可能ファイルを実行すると、新しいレコードが追加されますが、Linq出力は更新されません。プログラムを終了して再実行した後でも、コードを再コンパイルするまで、以前に追加されたレコードは表示されません。ここに私のコードです。Linqキャッシングの問題?

static void Main() 
    { 


     using (SqlConnection conn = new SqlConnection()) 
     { 
      Console.WriteLine("Starting insert"); 
      conn.ConnectionString = "Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=\"C:\\Users\\Test\\Database1.mdf\";Integrated Security=True"; 
      conn.Open(); 
      SqlCommand command = new SqlCommand("INSERT INTO Contacts (forname, initial, surname, dob) VALUES (@forname, @initial, @surname, @dob)", conn); 
      command.Parameters.AddWithValue("@forname", "Sarah"); 
      command.Parameters.AddWithValue("@initial", "J"); 
      command.Parameters.AddWithValue("@surname", "Jones"); 
      command.Parameters.AddWithValue("@dob", "04/24/1972 12:00:00"); 
      try 
      { 
       command.ExecuteNonQuery(); 
      } catch (Exception ex) 
      { 
       Console.Write(ex.Message); 
      } 
      conn.Close(); 
     } 

     using (DataClasses1DataContext db = new DataClasses1DataContext()) { 
      db.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, db.Contacts); 


      var contacts = from c in db.Contacts select c; 

      foreach (Contact co in contacts) 
      { 
       Console.Write("ID: " + co.Id.ToString() + "\n"); 
       Console.Write("First name: " + co.forname + "\n"); 
       Console.Write("Surname: " + co.surname + "\n"); 
       Console.Write("Date of Birth" + co.dob.ToString() + "\n\n"); 
      } 
     } 

}

+0

ef-contextは同じデータベースに接続されていますか?あなたのコードの最初の部分がビジュアルスタジオソリューションのデータベースに接続され、コードの第2部分がbin/debugフォルダのデータベースに接続されることを期待しています。 – Maarten

+0

はい、サーバーエクスプローラから接続文字列を取得しました。 –

+0

app.configから接続文字列を表示できますか? – Maarten

答えて

0

あなたの接続文字列とデータベースの場所を確認してください。私はあなたのコードの最初の部分がビジュアルスタジオソリューションにあるデータベースに接続し、コードの第2部分がbin/debugフォルダにあるデータベースに接続することを期待しています。これは、その時点でvisual-studio-solutionのデータベースがbin/debugフォルダにコピーされているため、の再コンパイル後に追加されたレコードがにしか表示されない理由を説明します。