none
VS2013 Local DB 관련 질문 RRS feed

  • 질문

  • 안녕하세요.

    Local DB에서 이상한 현상이 있는 것 같아 문의 드려봅니다. 처음 DB를 해보는 것이라서 Concept을 모르고 질문 드리는 것일 수도 있는데, 양해 부탁드려요...^^;

    제가 겪은 현상은, Project Path에 아래와 같이 local DB에 Stock.mdf를 생성하고서 등록을 하면 내용은 GridView에 잘 반영이 됩니다.

    Data Source=(LocalDB)\v11.0;AttachDbFilename=D:\Programming\ATSK_Plus\Stock.mdf;Integrated Security=True

    실제 Code는 아래와 유사합니다.

    public void StockOrder(int i거래번호)
            {
                string connStr = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=D:\Programming\ATSK_Plus\Stock.mdf;Integrated Security=True";
                SqlConnection conn = new SqlConnection(connStr);
    
                using (StockDataContext db = new StockDataContext())
                {
                    //DB connection 오픈
                    conn.Open();
    
                    // 새 레코드 객체 생성
    
                    Reserve reserve = new Reserve
                    {
                        거래번호 = 1,
                        등록일시 = DateTime.Now,
                        방향 = "BUY",                    
                    };
    
                    // 레코드객체를 테이블객체에 추가
                    db.Reserves.InsertOnSubmit(reserve);
    
                    // 서버에 전송
                    db.SubmitChanges();
                    ReservesGV.DataSource = db.Reserves;
    
                    this.reservesTableAdapter.Fill(this.stockDataSet.Reserves);
    

    그런데, Debug mode로 실행을 하면 이 Stock.mdf가 Debug Path에 copy 되어 보이고, 실제의 Project Path에 있는 Stock.mdf에는 반영이 안된다는 겁니다. 이후 Debug 실행을 끄더라도 Debug path에 있는 Stock.mdf에는 Insert한 Data들이 보이지만, Project Path에 있는 원본 Stock.mdf에는 반영이 안되어있습니다. 그래서 다시 재 실행을 시키면 원본을 다시 Debug Path로 copy하는 것 같아 데이타들이 자꾸 사라집니다. 왜 그럴까요?

    2015년 7월 20일 월요일 오후 2:24

답변

  • 안녕하세요.

    SMPark82 님 덕분에 더 검색을 해보았더니 말씀과 같이 Debug 실행과 연관이 있다는 것을 알게 되었습니다.

    Debug를 할 때 시험의 편의를 위해서 Project Path에서 copy되는 것은 일부러 그렇게 만든 것으로 이해가 되고 Release build를 했을 때는 이러한 문제가 없을 것 같습니다.

    해결 방법은 DB의 속성을 변경해서 Copy Always -> Copy if newer 를 해주면 Project Path에서 Debug로 계속 Copy되어 데이타가 Reset되는 것을 막을 수 있네요.

    감사합니다.

    위 내용은 아래 Link에서 찾았습니다.

    https://visualstudiomagazine.com/blogs/tool-tracker/2012/05/dealing-with-local-databases-or-why-your-updates-dont-stick.aspx


    • 답변으로 표시됨 Cruiser9 2015년 7월 22일 수요일 오전 4:56
    • 편집됨 Cruiser9 2015년 7월 22일 수요일 오전 4:56
    2015년 7월 22일 수요일 오전 4:55

모든 응답

  • 동일하지는 않으나, 아래와 동일한 이유로 발생되는 문제인지 확인해 보시기 바랍니다.

    This is happening because [yourProjectName].exe process is not closing after finishing debugging.

    There are two solutions to this problem.

    1. Every time you make change to application, Go to Task Manager -> Processes -> [yourProjectName].exe, end this process. You have to end this process every time you make changes to system.

    2. Add a exit button in your application to exit window and add these line to click event

    System.Diagnostics.Process.GetCurrentProcess().Kill();
    Application.Exit();
    2015년 7월 20일 월요일 오후 8:01
  • 안녕하세요.

    답변 감사합니다. 혹시나 해서 말씀해주신 내용으로 코드 넣어서 시험을 해보았는데, 해결이 되지 않네요.

    2015년 7월 22일 수요일 오전 4:25
  • 안녕하세요.

    SMPark82 님 덕분에 더 검색을 해보았더니 말씀과 같이 Debug 실행과 연관이 있다는 것을 알게 되었습니다.

    Debug를 할 때 시험의 편의를 위해서 Project Path에서 copy되는 것은 일부러 그렇게 만든 것으로 이해가 되고 Release build를 했을 때는 이러한 문제가 없을 것 같습니다.

    해결 방법은 DB의 속성을 변경해서 Copy Always -> Copy if newer 를 해주면 Project Path에서 Debug로 계속 Copy되어 데이타가 Reset되는 것을 막을 수 있네요.

    감사합니다.

    위 내용은 아래 Link에서 찾았습니다.

    https://visualstudiomagazine.com/blogs/tool-tracker/2012/05/dealing-with-local-databases-or-why-your-updates-dont-stick.aspx


    • 답변으로 표시됨 Cruiser9 2015년 7월 22일 수요일 오전 4:56
    • 편집됨 Cruiser9 2015년 7월 22일 수요일 오전 4:56
    2015년 7월 22일 수요일 오전 4:55