0

我对SimpleMembership及其在ASP.NET MVC Web站点中的使用有点困惑。对SimpleMembership的困惑

我的项目目前使用的代码第一个dbcontext,它坐落在一个名为“数据访问”的类库中。

我有另一个名为“DomainObjects”的类库,其中包含我在“数据访问”中声明的dbcontext使用的所有实体/对象。

我有另一个项目叫“DomainFactory”和顾名思义,它暴露的方法来访问数据上下文,处理数据等等等等

最后,我已经叫MVC 4应用程序的“Web”(此应用程序实际上使用IoC调用在“DomainFacotry”项目中声明的方法 - 但我不认为这与我在此尝试实现的内容相关。)

我的MVC应用程序现在处于我希望的阶段为其添加安全性。

使用基本的Internet应用程序模板,我可以看到在AccountModel.cs文件中声明了一个UsersContext,并且该上下文在整个应用程序中都被严重使用。 这不是我想要的行为。对于可测试性和关注点分离,我想我所有的验证逻辑,通过我的域类进行处理,但是,我不知道如何去这一点,并希望得到以下问题的解答:

  1. 因为我MVC应用程序没有引用我创建的dbcontext,我如何重新生成并重新生成数据库?我应该使用WebActivator吗?这是首选的方法吗?

  2. 将所有身份验证逻辑移至DomainFactory项目的最佳方式是什么?如果你已经这样做了,你是怎么做到的?

  3. 当我使用上面描述的方法时,有什么需要注意的吗?

非常感谢

回答

1

这里你最大的问题是有多个上下文。 EF对于多个上下文并没有很好的效果,即使你让它们起作用,目前只能迁移一个上下文,所以其他人只能参考现有的DBO。

除此之外,将身份验证移入类库确实没有任何复杂性。 ASP或EF关心您的模型居住的地方。只要你的DbContext可以获得对他们的引用,你就很好。在这方面,你也可以在存储类库中的DbContext,但只是建议EF只会自动在启动项目中看到DbContext实例。如果你把它放在一个班级图书馆里,你必须告诉它每次在add-migrationupdate-database-ProjectName 'MyClassLibrary'的地方看。