2009-07-22 43 views
5

我有一個簡單的問題,它讀取Excel文件(使用互操作)和填充用從中提取了一些數據的MSSQL數據庫文件。目前爲止沒有問題。 我有以下字段的商店表:的LINQ to SQL - 數據庫生成的密鑰已在使用

  • ID:INT,自動生成,自動同步:在插入
  • 名稱:字符串
  • 結算:字符串
  • 縣:字符串
  • 地址:字符串

我讀的Excel文件,然後創建一個新的商店對象,並設置名稱,結算,縣,地址PROPERT我打電話給Shops.InsertOnSubmit()和新的Shops對象。

這之後,我必須重新設置數據庫(至少表),爲此,我發現最簡單的方法是調用DeleteDatabase()方法,然後()再次調用的CreateDatabase。 問題是,第一次重置後,當我嘗試再次填充表格時,出現異常情況:數據庫生成了一個已使用的密鑰。

此外,從那時起,我無法使用該數據庫文件,因爲DatabaseExists()返回FALSE,但是當我調用CreateDatabase()方法時,它會引發異常,表明數據庫已經存在(儘管數據文件不存在)。

我在做什麼錯? 非常感謝您提前!

回答

4

這聽起來像你正在重新使用超越明智的數據上下文。嘗試在刪除數據庫後處理並重新創建數據上下文。

我懷疑問題是身份管理器仍然在跟蹤對象(銷燬和重新創建數據庫就是這樣一種邊緣情況,我認爲我們可以原諒它不會在此重置)。

+0

非常感謝你,我的配置數據上下文刪除數據庫之後再重新實例並重新創建它,所以它現在的工作。非常感謝你! 還有一件事:我如何'釋放'我迄今創建的數據庫? MSSQL不會允許我使用該名稱創建數據庫... – ShdNx 2009-07-22 12:04:43

+0

我不知道,恐怕。 – 2009-07-22 12:09:44

2

我遇到此錯誤。我有一個帶有身份的日誌表。我正在截斷日誌,而我的應用程序正在運行。發生了什麼事情時,數據庫會在截斷時再次啓動標識列,但是我用來記錄的數據上下文仍然具有使用相同密鑰跟蹤的對象。

0

我遇到了這個錯誤,因爲我使用自定義存儲過程插入一個具有標識列的表,但我忘記了在我的存儲過程結束時「SET @Id = SCOPE_IDENTITY」。

我沒有實際使用所產生的標識值這樣的問題只出現了,當我插入兩列以上。棘手的bug。