我有一个使用ASP.Net Identity的新ASP.NET MVC 5.1项目。
看来可靠并且很有希望,但是今天,如果使用SQL,我将花费近9个小时来做​​一些简单的事情。

我的问题是,我无法通过CodeFirst创建具有默认默认AspNetUsers表的外键引用的表。

例如:
我创建了一个名为-的表

   public class Address
    {
        [Key]
        public string UserId { get; set; }
        public string MyAddress { get; set; }
    }

但是,如何创建对 AspNetUsers 的外键引用?

我尝试将上面的属性替换为
public IdentityUser MyAddress { get; set; }
// Or
public virtual IdentityUser MyAddress { get; set; }
// Or
public virtual ApplicationUser MyAddress { get; set; }

但是它们仍然显示错误:
One or more validation errors were detected during model generation:

MiaPos.Models.IdentityUserLogin: : EntityType 'IdentityUserLogin' has no key defined. Define the key for this EntityType.
MiaPos.Models.IdentityUserRole: : EntityType 'IdentityUserRole' has no key defined. Define the key for this EntityType.
IdentityUserLogins: EntityType: EntitySet 'IdentityUserLogins' is based on type 'IdentityUserLogin' that has no keys defined.
IdentityUserRoles: EntityType: EntitySet 'IdentityUserRoles' is based on type 'IdentityUserRole' that has no keys defined.

我也尝试从此post覆盖 OnModelCreating
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<IdentityUserLogin>().HasKey<string>(l => l.UserId);
    modelBuilder.Entity<IdentityRole>().HasKey<string>(r => r.Id);
    modelBuilder.Entity<IdentityUserRole>().HasKey(r => new { r.RoleId, r.UserId });
}

但是,当我运行 Add-Migration 时,它会创建IdentityUserLogin,IdentityRole,IdentityUserRole表并进行复制,只是前缀有所不同。 (AspNet 身份)

最终,我在10秒钟内通过SQL做到了,但是我只想知道为什么我不能在CodeFirst中做?
为何从到Microsoft 2014 New Technology 很难做到这样的事情。

最佳答案

你可以这样因为有时您可能需要1-1连接

 public class AnotherTable
    {
        [Key]
        public string UserId { get; set; }

        [ForeignKey("UserId")]
        public virtual ApplicationUser User { get; set; }
    }

关于entity-framework - 如何向ASP.Net MVC 5 Identity添加外键引用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22297097/

10-15 03:53