如何使用数据库优先的Entity Framework更改表名

3
这与这个问题类似,但使用的是数据库优先的实体框架而不是代码优先:如何在使用Visual Studio 2013 ASP.NET Identity时更改表名? 在代码优先方法中,您可以重写OnModelCreating并执行以下操作,以便将用户信息保存在MyUsers表中,而不是默认的AspNetUsers表:
modelBuilder.Entity<IdentityUser>().ToTable("MyUsers")

在数据库优先方法中,我手动创建了MyUsers表,但由于OnModelCreating没有被调用,我不知道如何配置要保存到我的新表中的数据?

你在其他地方找到了这个答案吗? - João Paulo Beraldo
1个回答

0

您可以采用Code First方法,当覆盖OnModelCreating时添加以下代码:

System.Data.Entity.Database.SetInitializer<ApplicationDbContext>(null);

上面的这行代码将把AspNetIdentity实体链接到你的表,而无需重新创建表。
代码示例:
protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);

    modelBuilder.Entity<ApplicationUserRole>().ToTable("UserRoles");
    modelBuilder.Entity<ApplicationUserLogin>().ToTable("UserLogins");
    modelBuilder.Entity<ApplicationUserClaim>().ToTable("UserClaims");
    modelBuilder.Entity<ApplicationRole>().ToTable("Roles");

    System.Data.Entity.Database.SetInitializer<ApplicationDbContext>(null);
}

嗨,Freerider。OnModelCreating方法没有被调用?我猜这是因为我正在使用数据库优先的方法,这是我的要求。 - Bob
你的数据库上下文(例如我的示例中的ApplicationDbContext)是否继承自IdentityDbContext? - Xavier Egea
1
实际上不需要,我是从DbContext继承的。我需要从IdentityDbContext继承吗?我现在确实从它那里继承了,但OnModelCreating仍然没有被调用。我认为如果我将连接字符串更改为Code-First字符串,则会被调用,但我需要以Database-First方式进行操作。有什么建议或有用示例的链接吗? - Bob
1
@Bob,你找到了使用DatabaseFirst方法使其工作的方法吗? - Shyamal Parikh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接