2013-10-15 30 views
4

使用asp.net标识RTW version在事务中运行asp.net标识函数的建议方式是什么?

我需要在一个事务中执行多个操作,包括UserMananger函数调用和我的DbContext上的其他操作(例如:创建新用户,将其添加到组并执行一些业务逻辑操作)。

我该怎么做?

我的想法如下。

的TransactionScope

using (var scope = new TransactionScope(TransactionScopeOption.Required)) 
{ 
    // Do what I need 
    if (everythingIsOk) scope.Complete(); 
} 

的问题是:UserManager功能都是异步和TransactionScope不是设计与异步工作/等待。 It seems to be solved in .Net Framework 4.5.1。但是,我使用Azure网站托管我的项目构建,所以我无法定位到4.5.1。

数据库事务

​​

,似乎工作,但我怎么能单元测试呢?

UserManager<>构造函数接受IUserStore<>,所以我可以很容易地将它存根。

UserStore<>构造函数接受DbContext,不知道我该如何存根。

回答

0

您可以实现自己的测试用户存储,该存储可以用于单元测试。

如果您想在测试中使用实际的EF UserStore,那也可以,但默认情况下它将使用DefaultConnection字符串创建数据库。如果你想确保每个测试都有一个干净的数据库,你可以指定一个DatabaseInitializer来始终在你的测试中删除/重新创建你的表。

+0

谢谢。我成功地为用户事务存根(我的测试使用内存中的数据)。 – aleyush

+0

Hao Kung..Can您可以在不使用Microsoft的情况下为我们展示一个在mvc 5项目中使用asp.net标识的工作示例.AspNet.Identity.EntityFramework –

相关问题