ASP.NET SimpleMembershipProvider 自动迁移

2023-12-24

因此,我尝试在新的 MVC 4 项目中使用自动迁移,但不知何故它不起作用。我关注了这篇博文 http://blog.longle.net/2012/09/25/seeding-users-and-roles-with-mvc4-simplemembershipprovider-simpleroleprovider-ef5-codefirst-and-custom-user-properties/一步步。

我已将更改添加到UserProfile账户模型(NotaryCode场地):

[Table("UserProfile")]
public class UserProfile
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int UserId { get; set; }
    public string UserName { get; set; }
    public int NotaryCode { get; set; }
}

然后我在包管理器控制台上写了enable-migrations并且出现了一个Configuration类(继承自DbMigrationsConfiguration<Web.Models.UsersContext>)然后我将课程填写为:

public Configuration()
{
    AutomaticMigrationsEnabled = true;
}

protected override void Seed(Atomic.Vesper.Cloud.Web.Models.UsersContext context)
{
    WebSecurity.InitializeDatabaseConnection(
            "DefaultConnection",
            "UserProfile",
            "UserId",
            "UserName", autoCreateTables: true);

    if (!Roles.RoleExists("Atomic"))
        Roles.CreateRole("Atomic");

    if (!Roles.RoleExists("Protocolista"))
        Roles.CreateRole("Protocolista");

    if (!Roles.RoleExists("Cliente"))
        Roles.CreateRole("Cliente");

    string adminUser = "randolf";

    if (!WebSecurity.UserExists(adminUser))
        WebSecurity.CreateUserAndAccount(
            adminUser,
            "12345",
            new { NotaryCode = -1 });

    if (!Roles.GetRolesForUser(adminUser).Contains("Atomic"))
        Roles.AddUsersToRoles(new[] { adminUser }, new[] { "Atomic" });
}

然后我试着跑update-database -verbose但这行不通。我的意思是,这是输出:

数据库中已有一个名为“UserProfile”的对象。

PM> update-database -verbose
Using StartUp project 'Web'.
Using NuGet project 'Web'.
Specify the '-Verbose' flag to view the SQL statements being applied to the target database.
Target database is: 'VesperCloud' (DataSource: .\SQLSERVER, Provider: System.Data.SqlClient, Origin: Configuration).
No pending code-based migrations.
Applying automatic migration: 201211051825098_AutomaticMigration.
CREATE TABLE [dbo].[UserProfile] (
    [UserId] [int] NOT NULL IDENTITY,
    [UserName] [nvarchar](max),
    [NotaryCode] [int] NOT NULL,
    CONSTRAINT [PK_dbo.UserProfile] PRIMARY KEY ([UserId])
)
System.Data.SqlClient.SqlException (0x80131904): There is already an object named 'UserProfile' in the database.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async, Int32 timeout)
   at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite)
   at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   at System.Data.Entity.Migrations.DbMigrator.ExecuteSql(DbTransaction transaction, MigrationStatement migrationStatement)
   at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ExecuteSql(DbTransaction transaction, MigrationStatement migrationStatement)
   at System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable`1 migrationStatements)
   at System.Data.Entity.Migrations.Infrastructure.MigratorBase.ExecuteStatements(IEnumerable`1 migrationStatements)
   at System.Data.Entity.Migrations.DbMigrator.ExecuteOperations(String migrationId, XDocument targetModel, IEnumerable`1 operations, Boolean downgrading, Boolean auto)
   at System.Data.Entity.Migrations.DbMigrator.AutoMigrate(String migrationId, XDocument sourceModel, XDocument targetModel, Boolean downgrading)
   at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.AutoMigrate(String migrationId, XDocument sourceModel, XDocument targetModel, Boolean downgrading)
   at System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable`1 pendingMigrations, String targetMigrationId, String lastMigrationId)
   at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.Upgrade(IEnumerable`1 pendingMigrations, String targetMigrationId, String lastMigrationId)
   at System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration)
   at System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update(String targetMigration)
   at System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner.RunCore()
   at System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.Run()
ClientConnectionId:a7da0ddb-bccf-490f-bc1e-ecd2eb4eab04
**There is already an object named 'UserProfile' in the database.**

我知道该物体存在。我的意思是,我尝试使用自动迁移来精确地修改和运行,而无需手动重新创建数据库。但不知怎的,这不起作用。

我查看了 MSDN 文档并找到了该属性:

AutomaticMigrationDataLossAllowed = true;

但将其设置为 true 不会改变任何内容。我想我错过了一些东西,但不知何故找不到什么。任何想法?


update-database -verbose不起作用,因为您的数据表已经存在后您的模型已更改。

首先,确保 UserProfile 类没有更改。然后,运行:

Add-Migration InitialMigrations -IgnoreChanges

这应该生成一个空白的“InitialMigration”文件。现在,向 UserProfile 类添加任何所需的更改。添加更改后,再次运行更新命令:

update-database -verbose

现在将应用自动迁移,并且表将随着您的更改而更改。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.NET SimpleMembershipProvider 自动迁移 的相关文章

随机推荐

  • 如何在Godot 4.0游戏引擎中实现可组合的角色/技能系统?

    我目前正在使用 Godot 尝试 MOBA 风格游戏的原型 我正在努力寻找一种管理角色及其技能的方法 所有角色都将具有相似的属性 姓名 生命值 奔跑速度 力量等 然而 所有角色的技能都会有所不同 尽管有些角色非常相似 例如基于投射物的技能将
  • 如何在 Buddypress 中获取用户名/显示名称?

    在 buddypress 默认模板中 发布某个活动的用户名显示如下 bp activity action 但这带来的不仅仅是用户名 有没有更简单的方法来获取用户对象 名称 WordPress 获取用户数据功能不起作用 因为它显示页面作者 而
  • Rails 日期验证与年龄

    在我的 Rails 应用程序中 有一个注册表单 其中包含 DOB 字段 用户的年龄不必超过 18 岁 我如何对此进行验证 我的出生日期格式是 mm dd yy 这个语法非常有趣 你可以这样做 old enough 10 23 2000 to
  • 如何在使用 cardUseCompatPadding 时覆盖 CardView 中的标准填充?

    当我使用 cardUseCompatPadding 在卡片视图中显示阴影时 顶部填充比左侧填充大 如何使两个填充相等 因为我的丝带看起来不漂亮 它在上面更大 谢谢
  • 在博览会应用程序上请求通知权限时收到错误

    我有一个简单的代码 要求过去有效的通知权限 但突然间 它给了我这个错误 错误 调用本机方法时遇到异常 在模块 ExpoNotificationPermissionsModule 上执行导出方法 requestPermissionsAsync
  • 如何使用 pybabel 在 jinja 2.10 {% trans %} 中转义 '%' 字符?

    我正在使用 jinja 2 10 和 pybabel 当我的模板包含以下代码 trans 块内有 字符 时 pybabel compile 不会翻译该字符串 提取的字符串 在 po 中 正常 但在结果页面上它根本没有被翻译 h3 class
  • 从 python 中的函数返回左值

    抱歉 我是 Python 新手 虽然这似乎是一个非常基本的问题 但在询问听众之前 我做了尽职调查 试图避免真正愚蠢的问题 我试图找出从函数返回左值的正确习惯用法 假设我有一个包含 64 个对象的容器 并且我希望能够返回对这些对象的引用 cl
  • Wordpress 中的 PhP 联系表单

    所以我买了一个主题 它有一个简单的 PHP 联系表单 允许用户互相发送消息 但是当发件人填写表单并提交时 电子邮件来自我的默认 WordPress 管理员电子邮件 而不是用户输入的电子邮件地址表格 因此 如果收件人尝试回复他们的电子邮件 邮
  • Google Apps 脚本 - 从模板创建的每个文档中都出现“需要授权”

    我有一个 Google 文档 它有一个自定义 UI 菜单 其中包含一个选项 可以将新页面添加到文档并用一些数据填充它 我使用此文档作为模板 通过 Web 应用程序为单个用户创建许多其他文档 因此 我的用户来到我的 web 应用程序 单击生成
  • Boost::bind 和 Boost Phoenix::bind 有什么区别?

    Boost bind 和 Boost Phoenix bind 有什么区别 phoenix bind就好像lambda bind返回一个表达式模板的函数 该模板记录它必须调用给定的函数 它们被设计为分别与phoenix 和lambda 一起
  • 使用 jQuery 克隆

    我有一个允许用户推荐朋友的表格 我想在 朋友电子邮件 和 朋友姓名 这两个输入字段下方添加一个链接 该链接将克隆 朋友框 一次并将其添加到下面 另外 好友邮箱 和 好友姓名 的name属性为name friend email 0 and n
  • 如何将张量转换为字符串

    我正在测试 tf data 这是现在批量提供数据的推荐方法 但是 我正在加载自定义数据集 因此我需要 str 格式的文件名 但是当创建 tf Dataset from tensor slices 时 它们是 Tensor 对象 def lo
  • 根据列聚合过滤选定的列

    我希望仅选择唯一值少于 3 个的列 我可以通过生成布尔掩码pl all n unique lt 3 但我不知道是否可以通过 Polars API 使用该掩码 目前 我正在通过 python 解决这个问题 有更惯用的方法吗 import po
  • Logcat 消息在短时间内消失

    有时 eclipse logcat 消息在关闭应用程序一小段时间后就会消失 大多不会那么短 如何让它永远不会自动消失 编辑 我的设备仍然连接 以及如何将其设置为即使在设备断开连接并在下次启动之前清除后也显示日志 这也发生在我身上 设备已连接
  • Perl 正则表达式 'e' (eval) 修饰符带 s///

    我在理解 e 正则表达式修饰符的简单用法时遇到了一些困难 my var testing In this string we are var the e modifier s w 1 ee print 返回 在此字符串中 我们正在测试 e 修
  • 如何使用 DropDownList 的 SelectedIndexChanged 事件

    我有两个DropDownList在我的网络表单中 当我在第一个下拉列表中选择一个值时 我希望在第二个下拉列表中自动选择一个相关值 这就是我目前所拥有的 table tr td td tr table
  • 合并两个 Sass 文件

    我想即时将两个 sass 文件合并在一起 例如 如果我有 some class color white and some class background color red 那么最终结果将是 some class color white
  • 无法上传 > ~2GB 到 Google Cloud Storage

    追踪如下 相关的Python片段 bucket get bucket location bucket blob bucket blob location path blob upload from filename source path
  • 缩放用户控件中的裁剪像素

    我开发了一个用户控件 用户控件就像一个放大镜 用户控件有一个图像按钮 它显示逐像素裁剪的图像 StorageFile storageFile await StorageFile GetFileFromApplicationUriAsync
  • ASP.NET SimpleMembershipProvider 自动迁移

    因此 我尝试在新的 MVC 4 项目中使用自动迁移 但不知何故它不起作用 我关注了这篇博文 http blog longle net 2012 09 25 seeding users and roles with mvc4 simpleme