在Asp.Net Identity中扩展ApplicationUser

时间:2014-06-11 18:22:04

标签: asp.net-mvc asp.net-mvc-5 code-first asp.net-identity-2

所以我试图通过添加以下列来扩展ApplicationUser类。

  • CreateUserId
  • CREATEDATE
  • UpdateUserId
  • UpdateDate

这是我添加到ApplicationCode类

的代码
[MaxLength(128)]
[Required(ErrorMessage = "Create User Id is Required.")]
public string CreateUserId { get; set; }

[ForeignKey("CreateUserId")]
public ApplicationUser CreateUser { get; set; }

public DateTime CreateDate { get; set; }

[MaxLength(128)]
public string UpdateUserId { get; set; }

[ForeignKey("UpdateUserId")]
public ApplicationUser UpdateUser { get; set; }

public DateTime? UpdateDate { get; set; }

我最终要做的是让CreateUserId有一个外键约束指向ApplicationUser.Id(必需),并让UpdateUserId有一个外键约束指向回到ApplicationUser.Id(可选)

我收到以下错误:

  

ApplicationUser_UpdateUser_Target :: Multiplicity在关系'ApplicationUser_UpdateUser'中的Role'ApplicationUser_UpdateUser_Target'中无效。由于Dependent Role属性不是关键属性,因此Dependent Role的多重性的上限必须为'*'。

有人可以给我一些指导吗?

编辑..

我想我想出来了

public string UpdateUserId { get; set; }
public ApplicationUser UpdateUser { get; set; }

public string CreateUserId { get; set; }
public ApplicationUser CreateUser { get; set; }

public DateTime CreateDate { get; set; }

public DateTime? UpdateDate { get; set; }

protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<ApplicationUser>()
                .HasRequired(a => a.CreateUser)
                .WithMany()
                .HasForeignKey(u => u.CreateUserId);

    modelBuilder.Entity<ApplicationUser>()
                .HasRequired(a => a.UpdateUser)
                .WithMany()
                .HasForeignKey(u => u.UpdateUserId).WillCascadeOnDelete(false);

    base.OnModelCreating(modelBuilder);
}

1 个答案:

答案 0 :(得分:-1)

将ApplicationUser的配置从HasRequired更改为HasOptional:

modelBuilder.Entity<ApplicationUser>()
            .HasOptional(a => a.UpdateUser)
            .WithMany()
            .HasForeignKey(u => u.UpdateUserId).WillCascadeOnDelete(false);