我有一个在2013年开发的应用程序,它是在Visual Studio 2010中开发的,使用WebForms和System.Web.Security.Membership来保证安全。
就个人而言,我想以它的方式使用它,因为它似乎仍然可以正常工作。但是我们公司已经决定,出于安全考虑,我们不能再使用'dbo'了。数据库中的模式。
因此,我在数据库中对新模式进行了一系列更改,并将表添加到这些模式中。
但是,仍有一个问题让我发疯。
微软以其无限的智慧决定,如果你在你的应用程序中使用System.Web.Security.Membership,它将自动在数据库中创建几个表并将它们放在'dbo'中。架构,无论你是否想要它们。
所以,我知道会员资格的新替代品是身份,据说,如果您使用身份,您可以将其设置为使用您想要的任何模式。
事实是,当我谷歌(有时谷歌不是你的朋友)时,我想出了很多例子,但他们似乎都在使用MVC而不是WebForms,或者他们想要使用ASP.NET Core。所以这些例子需要控制器等。
如何让应用程序中的身份代码知道它应该使用“安全”架构而不是dbo?
好的,所以,我已经阅读了这两个网站,并且我能够为应用添加身份。
但是,就更改表的模式而言,我发现的所有内容都表示要进入继承自DbContext的类并添加方法:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
然后我会使用类似的东西:
modelBuilder.Entity<User>().ToTable("AspNetUsers", "SECURITY");
更改架构。
所以,我尝试了,我的第一个问题是在我的整个解决方案中没有继承DbContext的类。此外,没有方法OnModelCreating让我覆盖。
我完全迷失了。在所有处理它的人离开之后我继承了代码,所以我不能问他们任何关于它的事情。