我的应用程序中有一个标准 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; }
结果是这样的:
我想以某种方式让它变得更好。
我想要使用 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/