我正在尝试将糟糕而疯狂的表名称从AspNetUsers修改为Users。
我的项目是一个 WebForm 网站项目。我使用的是Visual Studio 2012,Entity Framework 6和Framework 4.5。我已经设置了整个身份的东西,一切正常。
现在我需要更改表名。如果我只输入以下代码:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder); // This needs to go before the other rules!
modelBuilder.Entity<IdentityUser>().ToTable("Users");
modelBuilder.Entity<IdentityRole>().ToTable("Roles");
modelBuilder.Entity<IdentityUserRole>().ToTable("UserRoles");
modelBuilder.Entity<IdentityUserLogin>().ToTable("UserLogins");
modelBuilder.Entity<IdentityUserClaim>().ToTable("UserClaims");
}
在 ApplicationDbContext 类中,它不会执行,如果我尝试手动更改表名,则会出现错误:
无效的对象名称"dbo"。AspNetUsers'
因此,根据一些建议,我尝试运行启用迁移添加迁移和更新数据库命令,但是从第一个错误中我得到以下错误:
PM> enable-migrations -verbose
使用启动项目"我的项目名称"。使用 NuGet 项目"我的项目名称"。System.ArgumentException:参数不正确。(HRESULT的例外:0x80070057(E_INVALIDARG))
服务器堆栈跟踪: at EnvDTE.Properties.Item(Object index) at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Object[]& outArgs) at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg)
在 [0] 处重新引发异常: at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) at EnvDTE.Properties.Item(Object index) at System.Data.Entity.Migrations.Extensions.ProjectExtensions.GetPropertyValue[T](Project project, String propertyName) at System.Data.Entity.Migrations.MigrationsDomainCommand.GetFacade(String configurationTypeName, Boolean useContextWorkingDirectory) at System.Data.Entity.Migrations.EnableMigrationsCommand.FindContextToEnable(String contextTypeName) at System.Data.Entity.Migrations.EnableMigrationsCommand.<>c__DisplayClass2.<.ctor>b__0() at System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command)参数不正确。(HRESULT的例外:0x80070057(E_INVALIDARG))
请给我一些指示,因为我不知道把手放在哪里了。谢谢
发现问题:
EntityFramework 没有对网站项目的完全支持https://entityframework.codeplex.com/workitem/568
因此,唯一的方法是创建一个 Web 应用程序项目并迁移所有现有代码。