加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – ApplicationDbContext – 它在项目中的位置

发布时间:2020-12-16 04:11:11 所属栏目:asp.Net 来源:网络整理
导读:我想在我的mvc 5应用程序中使用一个(EF)上下文文件,我想使用asp身份. 我在解决方案DAL,GUI和WebAPI中有一些项目. 我想在DAL程序集中移动ApplicationDbContext并从我的UI项目中删除EF completly. 当您启动新项目时,您使用ApplicationDbContext和asp身份做了什
我想在我的mvc 5应用程序中使用一个(EF)上下文文件,我想使用asp身份.

我在解决方案DAL,GUI和WebAPI中有一些项目.

我想在DAL程序集中移动ApplicationDbContext并从我的UI项目中删除EF completly.

当您启动新项目时,您使用ApplicationDbContext和asp身份做了什么?

您是将它留在UI层还是将其移动到数据层?

我真的没有经验丰富的开发人员问我希望它不会被投票.

解决方法

分离身份:

从UI中分离身份要复杂得多.在这里,微软已经如此密切地纠缠它们,以至于我建议将它留下来,直到你在专家级别理解Identity,EF和Repository Pattern.

但是,如果您有兴趣将身份与UI级别分开,这里有一个很棒的resource from Dino Esposito

>注意在Account Controller的构造函数中对ApplicationDbContext的引用:

public AccountController()
    : this(new UserManager<ApplicationUser>(new UserStore<ApplicationUser>
                         (new ApplicationDbContext())))

这很容易成为DAL中Context的引用.

>在上下文中使用Repo会很困难.这需要重新编写UserManager,我非常怀疑你想做什么.
>您可以创建一个继承自ApplicationDbContext并使用Interface抽象的子项

public class UserIdentityContext : ApplicationDbContext,IUserIdentityContext

现在,您可以使用Ninject将您的帐户控制器绑定到抽象模式

public AccountController()
    : this(new UserManager<ApplicationUser>(new UserStore<ApplicationUser>
                         (IUserIdentityContext identityContext)))

但是,这些移动都不允许您从UI项目中删除EF程序集.在这里,Microsoft过于紧密地绑定了Data和UI元素.您必须重新编写帐户控制器.

这是他们正在处理的一个问题,并且可能会在MVC 6 / Identity 3中大大改进

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读