2016-07-25 1 views
0

저는 Linq에 대해 매우 익숙하며 캐싱 문제라고 생각합니다. 내가 봤던 모든 "캐시 지우기"트릭은 효과가 없습니다. 기본적으로 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

은 연결 문자열 및 데이터베이스의 위치를 ​​확인합니다. 비주얼 스튜디오 솔루션에있는 데이터베이스에 연결하는 코드의 첫 번째 부분과 bin/debug 폴더에있는 데이터베이스에 연결하는 코드의 두 번째 부분이 필요합니다. 이렇게하면이 다시 컴파일 된 후에 추가 된 레코드가 으로 표시되는 이유가 설명됩니다. 그 시점에서 Visual Studio 솔루션의 데이터베이스가 bin/debug 폴더에 복사되기 때문입니다.

관련 문제