2016-07-25 119 views
0

我對Linq很新,我有我認爲是緩存問題。所有「清除緩存」技巧,我GOOGLE了沒有奏效。基本上,如果我在Visual Studio中單擊開始記錄被添加並在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是否連接到相同的數據庫?我期待你的代碼的第一部分連接到你的visual-studio-solution中的數據庫,並且你的代碼的第二部分要連接到bin/debug文件夾中的數據庫。 – Maarten

+0

是的,我從服務器資源管理器中獲取連接字符串。 –

+0

你可以顯示來自app.config的連接字符串嗎? – Maarten

回答

0

檢查您的連接字符串和數據庫位置。我期望你的代碼的第一部分連接到你的visual-studio-solution中的數據庫,並且你的代碼的第二部分連接到bin/debug文件夾中的數據庫。這可以解釋爲什麼添加的記錄只有在重新編譯後纔可見,因爲此時來自visual-studio-solution的數據庫被複制到bin/debug文件夾。