2

我想将存在的所有记录保存DataTable到我的数据库中。我在 C# 中使用 Linq-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??
      }
   }
}

请建议我更好的方法来做到这一点。

提前致谢。

4

1 回答 1

0

好吧,使用 Linq-to-SQL 之类的东西的全部意义在于它为您提供了正确的.NET 对象来使用,而不是笨拙的、无类型的.NET 对象DataTable

因此,如果您正确使用 Linq-to-SQL,您应该使用 Linq-to-SQL 将数据检索为 .NET 对象,然后您应该修改您的 .NET 对象,并再次使用 Linq-to-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-To-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();
    }
}
于 2013-07-06T07:07:30.953 回答