2013-07-06 2 views
1

Я хочу сохранить всю запись в DataTable в моей базе данных. Я использую Linq-to-SQL в C#.Как вставить DataTable со значениями в базу данных в 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?? 
     } 
    } 
} 

Пожалуйста, предложите мне лучший способ сделать это.

Заранее спасибо.

+0

The *** лучший способ *** будет использовать ** NET объекты **, который возвращает Linq-на-SQL, и *. * не ** неуклюжий старый 'DataTable', который имеет нетипизированные столбцы и строки ..... –

+0

Спасибо Marc_s.Какой вы можете предложить мне, как я могу отправить данные. – Mohit

ответ

0

Ну весь смысл использования что-то вроде Linq к SQL является то, что она дает правильное .NET объекты работать, вместо неуклюжей, нетипизированного DataTable.

Итак, если вы правильно используете Linq-to-SQL, вы должны получить данные как объекты .NET с использованием Linq-to-SQL, тогда вы должны изменить свои объекты .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(); 
    } 
} 
Смежные вопросы