【问题标题】:Asp.Net Identity, Web project and DAL Layer‏Asp.Net Identity、Web 项目和 DAL 层
【发布时间】:2014-12-25 18:45:53
【问题描述】:

今天我需要一些关于我目前正在努力解决的问题之一的建议

我正在做一个有 3 层的项目

1) DAL
2) BAL
3) Web
4) Entities (This is a separate project which contain only the entities 
         that will be use to create DB tables with EF Code first)

Entities being reference in all the 3 layers
DAL being referenced in BAL and Web
BAL being referenced in Web

我想从Web 项目中获取DAL 引用,我的Web 项目通常一直与BAL 交谈。我必须引用 DAL 的唯一原因是因为 ASP.NET Identity Startup.Auth.csIdentityConfig.cs 类。每个文件都包含一行代码,需要访问我的DBContext,该代码位于我的DAL 项目中。

IdentityConfig.cs:

var manager = new ApplicationUserManager
         (new UserStore<ApplicationUser>(context.Get<MyDbContext>()));

Startup.Auth.cs:

 app.CreatePerOwinContext(MyDbContext.Create);

如何调整我不必在 Web 项目中引用 DAL 的内容?可以推荐一下吗

谢谢

【问题讨论】:

  • 您可能会发现this question 很有用。主要思想是将您的ApplicationUser 类放在一些通用程序集中(在您的情况下为Entities)。该重构的另一个好处是您将拥有一个用于域和 ASP.NET 标识实体的 DbContext。有关该主题的更多详细信息,请查看this question
  • 不幸的是,我的应用程序结构与建议的应用程序略有不同。我认为这对我来说是行不通的,直到我做出相应的改变,我不能

标签: .net asp.net-identity dbcontext


【解决方案1】:

您正在创建一个 4 层架构。在数据访问层实现相应的逻辑,在业务层引用。所以最后你只能在你的网络中引用 BL。

【讨论】:

  • 你是想说,我需要将这两个类 Startup.Auth.csIdentityConfig.cs 移动到 DAL 中吗?
  • 如果是这样,我认为将这些移到 DAL 中并不是一个好主意。
  • 不要移动班级。确保它们位于您的 DAL 和 BL 所在的同一个命名空间中。
猜你喜欢
  • 2014-05-20
  • 2015-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-08
  • 1970-01-01
  • 2012-12-19
相关资源
最近更新 更多