繁体   English   中英

我想使用Entity Framework + ASP Identity,但我不希望EF为我生成表

[英]I want to use Entity Framework + ASP Identity but I don't want EF to generate tables for me

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

public class SecurityContext : IdentityDbContext{
...
public DbSet<Country> Countries { get; set; }

当我第一次创建用户时,创建了所有数据库表(标识表),包括我的Country表。
但是现在我在数据库中添加了新表( 从Management Studio创建 )并添加到IdentityDbContext

public DbSet<City> Cities { get; set; }

但是,当我现在运行应用程序时,我收到错误:

自创建数据库以来,支持“SecurityContext”上下文的模型已更改。 考虑使用Code First Migrations来更新数据库。

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

总结整个问题。 我想使用EF,但我想自己创建我的数据库,包括Identity表。 我怎样才能做到这一点?

您可以关闭EF初始化程序并自行管理表和映射。

在构造函数中禁用数据库初始化程序,如下所示...

public SecurityContext()
    : base("DefaultConnection")
{
    Database.SetInitializer<SecurityContext>(null);
}

然后,您可以采用EF迄今为止创建的模式并自行管理(您可以删除迁移历史记录表)。 我建议使用SQL Server数据库项目,以便您可以控制您的架构。 现在,您可以在架构更改时更新DbContext。

您也可以通过配置禁用它

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM