C# 我想使用实体框架+;ASP身份,但我没有';我不想EF为我生成表

C# 我想使用实体框架+;ASP身份,但我没有';我不想EF为我生成表,c#,asp.net,entity-framework,entity-framework-6,asp.net-identity,C#,Asp.net,Entity Framework,Entity Framework 6,Asp.net Identity,我已创建了新的ASP MVC 5应用程序(具有ASP身份)。 我使用IdentityDbContext类将所有域对象放入其中 public class SecurityContext : IdentityDbContext{ ... public DbSet<Country> Countries { get; set; } 但当我现在运行应用程序时,我得到错误: 支持“SecurityContext”上下文的模型自 数据库已创建。考虑使用代码第一迁移来更新 数据库 如果我删除所有表

我已创建了新的ASP MVC 5应用程序(具有ASP身份)。
我使用
IdentityDbContext
类将所有域对象放入其中

public class SecurityContext : IdentityDbContext{
...
public DbSet<Country> Countries { get; set; }
但当我现在运行应用程序时,我得到错误:

支持“SecurityContext”上下文的模型自 数据库已创建。考虑使用代码第一迁移来更新 数据库

如果我删除所有表并再次运行应用程序,将创建
City
,但我不想更灵活。
所以我想做的是,我可以创建所有数据库表,并在以后的项目中创建我的POCO类,这样我就可以使用EF进行数据访问。
我不希望EF为我创建类(单独连接这些东西时,我感觉更安全)。
另外(我知道这是可能的,但只是不知道如何)我可以阻止asp Identity单独创建表吗
总结整个问题。我想使用EF,但我想自己创建数据库,包括
Identity
表。如何执行此操作?

您可以关闭EF初始值设定项,自己管理表和映射

在构造函数中禁用数据库初始值设定项,如下所示

public SecurityContext()
    : base("DefaultConnection")
{
    Database.SetInitializer<SecurityContext>(null);
}
publicsecuritycontext()
:base(“默认连接”)
{
Database.SetInitializer(null);
}

然后,您只需获取EF迄今为止创建的模式并自己管理它(您可以删除迁移历史记录表)。我建议您使用SQL Server数据库项目,以便能够对模式进行源代码控制。现在由您在模式更改时更新DbContext。

您也可以通过配置禁用它

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings>    
    <add key="DatabaseInitializerForType YourNameSpace.SecurityContext, YourLibraryName" value="Disabled" />
    </appSettings>
</configuration>

首先使用EF数据库
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings>    
    <add key="DatabaseInitializerForType YourNameSpace.SecurityContext, YourLibraryName" value="Disabled" />
    </appSettings>
</configuration>