我当前正在设计一个应用程序,我需要使用两个不同的数据库模式(在同一个实例上):一个作为应用程序基础,另一个作为自定义应用程序和每个客户的字段。 因为我读了一些关于Repository模式的东西,并且我已经理解可以使用两个不同的上下文而没有效率松散,我现在问我是否可以在两个模式与Entity Framework之间使用单个数据库事务,因为我实际上在做直接在数据库上(SQL Server 2008-2012)。 对不起我的英语,提前致谢!
答案 0 :(得分:0)
如果您的连接字符串是相同的(在您的情况下,因为您只有不同的上下文有不同的模式),那么您可以使用这种方法。
基本上,您将有两个不同的上下文,它们将通过相同的连接字符串连接到数据库,并且代表两个不同的模式。
using (var scope = new TransactionScope()) {
using (var contextSO = new ContextSchemaOne()) {
// Add, remove, change entities from context schema one
ContextSchemaOne.SaveChanges;
}
using (var contextST = new ContextSchemaTwo()) {
// Add, remove, change entities from context schema two
ContextSchemaTwo.SaveChanges;
}
scope.Complete();
}
过去使用这种方法我并不是很成功,我们每个数据库切换到一个上下文。
进一步阅读:Entity Framework: One Database, Multiple DbContexts. Is this a bad idea?
在做出决定之前,最好先阅读一些关于工作单元的内容。
您必须执行以下操作:Preparing for multiple EF contexts on a unit of work - TransactionScope