2013-07-06 68 views
1

我想將存在於DataTable中的所有記錄保存到我的數據庫中。我在C#中使用Linq-to-SQL。如何在數據庫中插入帶有值的數據表到數據庫中LINK to sql

我使用這個代碼:

DataTable dt = null; 
dt = getTable(fl.ToString()); //getting DataTable 

using (DataClassesDataContext dc = new DataClassesDataContext()) 
{ 
    foreach (var mt in dc.Mapping.GetTables()) 
    { 
     if (dt.TableName == mt.TableName) 
     { 
     //How to insert this table values in DB?? 
     } 
    } 
} 

請建議我更好的方式來做到這一點。

在此先感謝。

+0

的***更好的辦法***將是使用** .NET對象**是LINQ到SQL回報,*。 *不是**笨拙的舊的'DataTable',它具有無類型的列和行..... –

+0

謝謝Marc_s.可否請您提示我如何提交數據。 – Mohit

回答

0

好,整點使用類似的LINQ到SQL的是,它給你正確的.NET對象的工作,而不是笨拙的,無類型DataTable

所以如果你使用LINQ到SQL正確,你應該檢索數據爲.NET中使用LINQ到SQL,那麼你應該修改你的.NET對象的對象,並再次使用LINQ到SQL存儲數據。

事情是這樣的:

// set up your Linq-to-SQL DataContext 
using (AdventureWorksDataContext ctx = new AdventureWorksDataContext()) 
{ 
    // get some data - use the *OBJECTS* returned to you! Not a DataTable! 
    List<Customer> customers = ctx.Customers.Take(10).ToList(); 

    // modify data 
    foreach (Customer c in customers) 
    { 
     c.ModifiedDate = DateTime.Now; 
    } 

    // save the changes 
    ctx.SubmitChanges(); 
} 

所以,如果你有一個DataTable,什麼我建議是將這些DataRows變成某種一個儲存在你的數據庫中的對象類型,然後存儲這些信息納入使用LINQ到SQL數據庫 - 這樣的事情:

public void SaveData(DataTable table) 
{ 
    // set up your Linq-to-SQL DataContext 
    using (AdventureWorksDataContext ctx = new AdventureWorksDataContext()) 
    { 
     // iterate over the data rows 
     foreach (DataRow row in table.Rows) 
     { 
      // Convert the DataRow to an object 
      YourObjectType myData = ConvertDataRowToObject(row); 

      // add this data to the Linq-to-SQL data context 
      ctx.YourObjectTypes.InsertOnSubmit(myData); 
     } 

     // save the changes 
     ctx.SubmitChanges(); 
    } 
}