2017-08-11 27 views
-1

我正在构建一个asp MVC网站。我正在为我的网站使用身份验证,因此我使用默认模板的默认身份验证方法。我现在完全混淆了身份应用程序dbcontext类和我的应用程序的自定义dbcontext类。我有很多关于这方面的问题。将Asp.Net Mvc默认应用程序dbcontext类移动到另一个文件夹

1)我应该为每个dbcontexts分别启用迁移吗?

2)我可以将上下文的数据库指向单个数据库吗? (我看到答案说可以完成..)有什么问题吗?

3)我可以将Identitymodel.cs类从models文件夹移动到我的另一个dbcontext所在的名为Databases的自定义文件夹中吗?我看到命名空间仍然是dbcontext.models而不是dbcontext.databases

有人可以回答我..我查过了与此相关的所有问题仍然无法清除我的疑惑。

回答

0

所以如果你真的需要两个DbContexts(我很好奇为什么),你必须为每个dbcontexts分别启用迁移。您必须为每个要生成的Configuration.cs文件指定一个文件夹。事情是这样的:

PM> Enable-Migrations -ContextTypeName ApplicationDbContext -MigrationsDirectory Migrations\ApplicationDbContext 
Checking if the context targets an existing database... 
Code First Migrations enabled for project SomeWebApplication. 

PM> Enable-Migrations -ContextTypeName YourCustomDbContext -MigrationsDirectory Migrations\YourCustomDbContext 
Checking if the context targets an existing database... 
Code First Migrations enabled for project SomeWebApplication. 

你的上下文可以指向同一个分贝(他们可以有一个共同的连接字符串),只要不涉及做同桌。

是的,你可以移动IdentityModel到另一个文件夹,但你必须手动改变命名空间。 (或者让ReSharper的,它可以自动进行)

+0

“所以,如果你真的需要有两个DbContexts(我很好奇为什么)“..我不熟悉从2个dbcontexts制作单个的dbcontext。作为一个脚手架,恐怕如果这可能会引发错误。 – Abhijith

1

1)无

2)是的,你可以做到这一点,但你实现它在一个环境更好。 你怎么能这样做?你的答案就在这里: 创建的ApplicationDbcontext类名:

ApplicationDbcontext.cs

public class ApplicationDbContext :IdentityDbContext<User, Role, Guid, UserLogin, UserRole, UserClaim> 
{ 
    public ApplicationDbContext() : 
     base("Server=.;Initial Catalog=TestDb;Integrated Security=true;MultipleActiveResultSets=True;") 
    { 
    } 

    public DbSet<Person> Peoples { get; set; } 
    // add poco classes here 
} 

创建custom身份波苏斯:

public class User : IdentityUser<Guid, UserLogin, UserRole, UserClaim> 

public class Role : IdentityRole<Guid,UserRole> 

public class UserLogin : IdentityUserLogin<Guid> 

public class UserRole : IdentityUserRole<Guid> 

public class UserClaim : IdentityUserClaim<Guid> 

现在你有一个的DbContext和可删除IdentiyMode.cs

ex ecute这个命令:Add-Migration initUpdate-Database --verbose

你不需要其他的DbContext

IdentityContext继承DbContext

public class IdentityDbContext<TUser, TRole, TKey, TUserLogin, TUserRole, 
      TUserClaim> : DbContext 
+0

仍然我会有2个上下文..一个我为我的模型dbsets创建,一个来自IdentityDbContext。 – Abhijith

+0

你不需要你的上下文,只需在'ApplicationDbContext.cs'中定义'Dbset ',你就可以删除'IdentiyModel。cs' –

+0

哎呀!我想你没有得到我。我有2个上下文.. 1)公共类AstroEntities:DbContext为我的模型2)公共类ApplicationDbContext:IdentityDbContext ..所以我问我是否可以将其添加在相同的文件夹或相同的命名空间 – Abhijith

相关问题