我想将 ASP.Net core 2.2 中模型的主键的数据类型从 int 更改为 long,因为它即将超出 int 范围。该应用程序以代码为先,并使用 SQL 服务器作为数据库。
更改模型中的数据类型有效并且运行 Add-Migration 也有效,但 Update-Database 失败并显示错误:
System.Data.SqlClient.SqlException (0x80131904): The index 'IX_tblMTransactions_OriginalTransactionId' is dependent on column 'OriginalTransactionId'.
The object 'FK_tblMTransactions_tblMTransactions_OriginalTransactionId' is dependent on column 'OriginalTransactionId'.
Run Code Online (Sandbox Code Playgroud)
所以我阅读了它,似乎需要对迁移进行一些调整,例如在列更改之前删除外键和索引,然后将它们带回来。不幸的是,我找不到任何有关在 .net core 2.2 中执行此操作的有用信息,我找到的最接近的是这个问题,但它谈到了 .net core 2.1 和选项DropForeignKey并DropIndex
提到那里似乎不再可用.net core 2.2 根据这篇文章。
这是迁移类:
public partial class _20190817_1746 : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterColumn<long>(
name: "OriginalTransactionId",
table: "tblMTransactions",
nullable: true,
oldClrType: typeof(int),
oldNullable: true); …Run Code Online (Sandbox Code Playgroud) 对于某些应用程序,我需要一个自定义授权策略提供程序,并点击此链接,并能够成功创建一个在控制器中工作的授权策略提供程序。现在,当涉及到视图时,在基于角色的授权中,您可以简单地使用该术语@if (User.IsInRole("SomeRole"))来显示或隐藏 div 和资源。
如何在视图中使用自定义授权策略提供程序来确定给定用户是否可以根据策略评估查看内容?
我搜索了网络,找不到有关它的有用信息,并尝试与
@if ((await AuthorizationService.AuthorizeAsync(User, "PolicyName")).Succeeded)
Run Code Online (Sandbox Code Playgroud)
但这也并不成功——它也不是一项政策。
以前有人这样做过吗?
我在控制器中使用自定义策略提供程序,如下所示:
[MinimumAgeAuthorize(15)]
public IActionResult Index()
{
//some code
}
Run Code Online (Sandbox Code Playgroud)
我不能做
@if ((await AuthorizationService.AuthorizeAsync(User, "MinimumAgeAuthorize(15)")).Succeeded)
Run Code Online (Sandbox Code Playgroud)
在剃刀视图中它的等价物是什么?
c# model-view-controller authorization asp.net-authorization asp.net-core-mvc
c# ×2