use*_*468 2 c# entity-framework asp.net-mvc-4
如何使用实体框架在一个事务中将数据保存到多个表中?
我有多个用于填充上下文的 void 方法,但我想将其保存在一个事务中,而不是多次保存。这样做的最佳方法是什么?
namespace DataAccess.Services
{
public class Submissions
{
DataContext Context;
public Submissions()
{
Context = new DataContext();
}
public void InsertAllData()
{
//Save all data at once for all below contexts
//DataContext.SaveChanges();
}
void InsertObject1(int Object1Id )
{
var obj1 = new DataAccess.Entity.Object1();
obj1.Field1 = ....
obj1.Field2 = ....
.....
DataContext.Objects.Add(obj1);
}
void InsertObject2(int Object2Id )
{
var obj2 = new DataAccess.Entity.Object2();
obj2.Field1 = ....
obj2.Field2 = ....
.....
DataContext.Objects.Add(obj2);
}
void InsertObject3(int Object3Id )
{
var obj3 = new DataAccess.Entity.Object3();
obj3.Field1 = ....
obj3.Field2 = ....
.....
DataContext.Objects.Add(obj3);
}
}
}
Run Code Online (Sandbox Code Playgroud)
您的示例代码看起来不错。
实体框架是一个更改跟踪器,可以跟踪您的所有更改。您对上下文中的对象所做的每个更改都将由该上下文本地存储,并且当您调用 时,所有更改都将立即提交DataContext.SaveChanges();。
因此,在这种情况下,如果您随后调用InsertObject1、thenInsertObject2和InsertObject3、then DataContext.SaveChanges();,所有内容都将一次性存储。
如果您的意思是如何在 SQL 数据库事务中完成所有这些操作,您可以在此处阅读有关如何使用这些内容的信息: http: //msdn.microsoft.com/en-us/data/dn456843
| 归档时间: |
|
| 查看次数: |
3783 次 |
| 最近记录: |