好吧,使用 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();
}
}