我正在尝试使用LINQPad使用DataSet查询MS Access表,并希望将查询结果插入到SQL表中。
这是我从MS Access表中获取数据的方式:
string connectionString = ("Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=C:\\Temp\\temp.mdb;");
OdbcConnection myconnection = new OdbcConnection(connectionString);
OdbcDataAdapter myadapter = new OdbcDataAdapter("SELECT * FROM Name", myconnection);
DataSet myCustomersDS = new DataSet();
myadapter.Fill(myCustomersDS, "Name");
现在在LINQPad中,我想将数据集myCustomersDS中的所有记录插入到SQL表中。 我尝试以这种方式在LINQPad中查询数据集,它给了我正确的结果:
Connection.Open();
var toInsert = from b in myCustomersDS.Tables["Name"].AsEnumerable()
select b;
toInsert.Dump();
Connection.Close();
我尝试了这些命令的各种版本,但总是得到与DataSet类型不匹配的错误与表类型匹配。
Name.InsertOnSubmit(toInsert);
SubmitChanges();
谢谢你, 史蒂芬
答案 0 :(得分:2)
使用LINQ Table对象将数据插入表时,需要将要添加的数据映射到表的行类型的对象。
如果你有一个名为Name
的表,你需要创建一个Name
对象的实例,填写要插入的值,然后插入它。
如果插入一行,请使用InsertOnSubmit()
。否则,如果要插入对象集合,请使用InsertAllOnSubmit()
。
如,
// insert a single item
Name.InsertOnSubmit(new Name
{
Name = "Bob",
Title = "Janitor",
});
// inserting multiple items
var toInsert =
from row in myCustomerDS.Tables["Name"].AsEnumerable()
select new Name
{
Name = row.Field<string>("Name"),
Title = row.Field<string>("Title"),
};
Name.InsertAllOnSubmit(toInsert);
SubmitChanges();
答案 1 :(得分:1)
LinqPad中有MS Access的上下文驱动程序,您可以在此处下载Microsoft Access Data Context Driver 下载.lpx文件,在LinqPad中,单击添加连接,然后单击'查看更多驱动程序...'然后单击“浏览”并选择.lpx文件,驱动程序添加在顶部列表框中