저는 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");
}
}
}
동일한 데이터베이스에 ef-context가 연결되어 있습니까? 코드의 첫 번째 부분이 visual-studio-solution의 데이터베이스에 연결되고 코드의 두 번째 부분이 bin/debug 폴더의 데이터베이스에 연결될 것으로 예상됩니다. – Maarten
예, 서버 탐색기에서 연결 문자열을 가져 왔습니다. –
app.config에서 연결 문자열을 표시 할 수 있습니까? – Maarten