c# - ASP Identity 用户和其他表之间的 Entity Framework 映射 - 更改 Id 列

标签 c# asp.net entity-framework entity-framework-6 asp.net-identity

我的应用程序中有一个标准 Identity 用户...

public class ApplicationUser : IdentityUser<int, ApplicationUserLogin, ApplicationUserRole, ApplicationUserClaim>
{...

...其中 Id 作为主键。 如何将 Id 更改为 UserId?
我问这个是因为我有一个表应该与 AspNetUsers 表连接。 我是这样做的:

public class ApplicationUser : IdentityUser<int, ApplicationUserLogin, ApplicationUserRole, ApplicationUserClaim>
{...
public virtual ICollection<JobApply> JobApplies { get; set; }

JobApply代码是:

public class JobApply
{...
public int ApplicationUserId { get; set; }
public virtual ApplicationUser ApplicationUser { get; set; }

结果是这样的:
enter image description here
我想以某种方式让它变得更好。
我想要使​​用 UserId 而不是 Id,以便两个表中的列都被命名为 UserId。
有办法做到这一点吗?

最佳答案

您无法更改名称。 Id 定义在扩展系统的最底层 IUser<T> ,全部IdentityUser实现最终必须继承自。

如果不重写所有内容,就没有办法做到这一点。

您可以更改存储在数据库中的字段名称,但无法更改代码中使用的属性名称。如果您只想更改数据库中列的名称,那么您只需使用 FluentConfiguration 更改属性名称即可。

编辑:

在您的 ApplicationContext 中,您将执行以下操作:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);

    modelBuilder.Entity<ApplicationUser>()
        .Property(p => p.Id)
        .HasColumnName("UserId");
}

关于c# - ASP Identity 用户和其他表之间的 Entity Framework 映射 - 更改 Id 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24474968/

相关文章:

c# - 如何在 Linq 中实现嵌套 for 循环?

c# - EF 核心 : The INSERT statement conflicted with the FOREIGN KEY constraint

c# - Entity Framework 代码优先迁移

entity-framework - Cascade 删除所有使用具有一对多和多对多关系的 Entity Framework Core 的子级

c# - XAML Hub Control Windows 8.1 Universal,InvokeCommandAction 未触发

c# ListView :How to create Columns without header

jquery - 带有 Bootstrap 的 mvc 下拉列表

c# - Azure DevOps如何通过引用另一个解决方案中的另一个项目来构建项目

c# - 调用 .fail(error) 而不抛出异常

c# - 为什么变量的输出不显示在使用 C# 的控制台上