在搜索了很多网站之后,我发现我可以使用如下源代码之类的实体事务手动创建事务。
using (var tran = DataContext.BeginTransaction())
{
// Clear all data in some table
DataContext.SomeTables
.ForEach(x => DataContext.SomeTables.DeleteObject(x));
DataContext.SaveChanges();
// Import data from excel as DataSet object.
var ds = ImportDataFromExcel(file.FullName);
foreach (DataRow dr in ds.Tables[0].Rows)
{
DataContext.SomeTables.AddObject(new SomeTable
{
// fill object with data from current row.
});
}
DataContext.SaveChanges();
// Commit Transaction
tran.Commit();
}
助手类
public static DbTransaction BeginTransaction(this ObjectContext context, IsolationLevel isolationLevel = IsolationLevel.ReadCommitted)
{
if (context.Connection.State != ConnectionState.Open)
{
context.Connection.Open();
}
return context.Connection.BeginTransaction(isolationLevel);
}
感谢
Kim Major
回答以下问题。我找不到任何其他明确建议我使用实体事务的页面,包括msdn主网站。(
How to: Manage Transactions in the Entity Framework
)
How to use transactions with the Entity Framework?