2009-12-17 57 views
0

當我調用datacontextInstance.Insertonsubmit()和datacontextinstance.submitChanges()時,它會在插入新數據之前清除數據庫中的所有現有數據。linq - 插入新數據替換數據庫上的現有數據。爲什麼?

如何執行真正的插入操作?

我想在不清除現有數據的情況下將新數據添加到現有表中。

感謝

編輯:

這裏是我的測試代碼,我想...

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace ConsoleApplication2 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 

      DataClasses1DataContext entities = new DataClasses1DataContext(); 
      for (int i = 1; i <= 100; i++) 
      { 
       textdata dt = new textdata(); 
       dt.id = i; 
       dt.ipaddress = "172.168.3.2"; 
       dt.pcname = "testusr"; 
       dt.publicip = "test pub ip"; 
       dt.username = "testusr"; 
       dt.textdata1 = "Some DATA"; 
       dt.dttime = DateTime.Now; 
       entities.textdatas.InsertOnSubmit(dt); 
       entities.SubmitChanges(System.Data.Linq.ConflictMode.ContinueOnConflict); 
      } 
      foreach (textdata dtdata in entities.textdatas) 
      { 
       Console.WriteLine(dtdata.dttime.Value.ToString()); 

      } 
      Console.ReadLine(); 


     } 
    } 
} 

我做100環更改爲200,300至400等我跑我的應用程序之前。但是,新記錄出現在數據庫中,舊記錄消失了。再次

編輯:

這裏是我的App.Config中......

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <configSections> 
    </configSections> 
    <connectionStrings> 
     <add name="ConsoleApplication2.Properties.Settings.Database1ConnectionString" 
      connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True" 
      providerName="System.Data.SqlClient" /> 
    </connectionStrings> 
</configuration> 
+1

標題是可怕的,它可以調整,以反映你有問題嗎? – Gregory 2009-12-17 04:01:29

+0

再次更改.. – Josh 2009-12-17 04:06:23

+1

ConnectionString ....您使用的是什麼提供程序? – 2009-12-17 04:10:04

回答

1

你可以只發布你的插入方法嗎?我認爲問題來自您的代碼而不是VS2010。

+0

發佈了我的完整代碼 – Josh 2009-12-17 04:35:30

1

除非你也檢索到的所有數據,並要求DeleteOnSubmit每個檢索到的元素,它不應該是在執行InsertOnSubmit時刪除任何數據。插入的項目會導致在調用SubmitChanges時生成SQL插入語句。我知道獲得刪除語句的唯一方法是調用DeleteOnSubmit。也許,您正在考慮在調用提交更改以減少推送回服務器的數據量之前,您需要從表中刪除項目。這是不正確的。只有新數據或更改後的數據纔會被髮回 - 調用SubmitChanges時調用DeleteOnSubmit將強制刪除數據。

+0

我發佈了我的代碼.... – Josh 2009-12-17 04:32:22

1

我的猜測是id是數據庫中的關鍵字,但它不是自動生成的。 所以當你創建你的新實體併爲它們分配已存在於db-db條目中的密鑰時,它們就會被新的實體覆蓋。