如何在标识 2 中将 Id 属性从字符串转换为 int



>我正在使用 ASP.NET MVC 5/Entity 6框架和代码优先方法在c#中构建应用程序。我正在尝试将身份 2 中的 Id 属性从 string 更改为 integer .

我遵循了似乎直截了当的文档。

然后我使用以下命令创建迁移

Add-Migration InitialCreate

由于某种原因,迁移文件中不包含 AspNet 表。但是,然后我使用以下命令进行了迁移

Update-Database

迁移已执行,没有出现任何问题,播种机运行良好。

但是,当我运行应用程序时

我收到以下错误

异常

详细信息:系统格式异常:输入字符串不在 格式正确。

该错误突出显示Startup.Auth.cs文件中下面的第 38 行。

Line 36: regenerateIdentityCallback: (manager, user) =>
Line 37: user.GenerateUserIdentityAsync(manager),
Line 38: getUserIdCallback: (id) => (id.GetUserId<int>()))

如何修复此错误?

您需要删除您的 cookie。一个快速测试是使用其他浏览器打开您的应用程序(还没有cookie,可能使用IE或Edge)。

这是因为当您首次浏览到该网站时,会创建一个 cookie(使用主键的字符串版本)。

当您将主键更改为 int 时,浏览器中的 cookie 仍在使用字符串版本,因此您将收到Exception Details: System.FormatException: Input string was not in a correct format.错误。

曾经被这个错误刺痛过一次,因此我记得我必须做什么来修复它,这是更多信息的链接:https://github.com/TypecastException/AspNet-Identity-2-With-Integer-Keys/issues/2

相关内容

  • 没有找到相关文章

最新更新