【问题标题】:How to Insert DataTable with values into Database in Linq to sql如何在 Linq to sql 中将带有值的 DataTable 插入数据库
【发布时间】:2013-07-06 06:18:25
【问题描述】:

我想将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??
      }
   }
}

请给我建议更好的方法。

提前致谢。

【问题讨论】:

  • 更好的方法是使用 Linq-to-SQL 返回的 .NET 对象,并且 不是笨拙的老DataTable,它有无类型的列和行.....
  • 谢谢 Marc_s。你能建议我如何提交数据。

标签: asp.net sql-server linq-to-sql


【解决方案1】:

嗯,使用 Linq-to-SQL 之类的东西的重点在于它为您提供了适当的 .NET 对象使用无类型的 DataTable,而不是笨拙的 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();
    }
}

【讨论】:

    猜你喜欢
    • 2011-01-29
    • 2015-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多