实体框架标识将外键添加到(和来自)AspNetUsers

时间:2015-06-05 15:43:40

标签: c# asp.net-mvc entity-framework asp.net-identity

我正在尝试将“AspNetUsers”表(由身份实体框架生成)中的外键添加到表“Clients”(由我自己的类使用代码第一实体框架生成),以便生成一个 - 一段关系。

我不知道如何从客户端引用AspNetUsers(因为这不是我模型中的类)。

这是我的代码,首先是我的客户端模型:

namespace TransportNEA.Models
{
    public class Client
    {
        [Key]
        public int ClientID { get; set; }
        [Required]
        public string Name { get; set; }
        [Required]
        public string Surname { get; set; }
        [Required]
        [EmailAddress]
        public string Email { get; set; }
        [Required]
        public string PhoneNumber { get; set; }
        public virtual List<ClientAddress> Address { get; set; }

        //I want to add here a FOREIGN KEY to AspNetUsers table but I don't know how
    }
}

我的背景:

namespace TransportNEA.Context
{
    public class TNEAContext : DbContext
    {
        public DbSet<Client> Clients { get; set; }
    }
}

AccountViewModels类的注册视图模型:

public class RegisterViewModel
    {
        [Required]
        [Display(Name = "Nombre")]
        public string Name { get; set; }
        [Required]
        [Display(Name = "Apellido")]
        public string Surname { get; set; }
        [Required]
        [Display(Name = "Telefono")]
        public string PhoneNumber { get; set; }

        [Required]
        [EmailAddress]
        [Display(Name = "Correo electrónico")]
        public string Email { get; set; }

        [Required]
        [StringLength(100, ErrorMessage = "El número de caracteres de {0} debe ser al menos {2}.", MinimumLength = 6)]
        [DataType(DataType.Password)]
        [Display(Name = "Contraseña")]
        public string Password { get; set; }

        [DataType(DataType.Password)]
        [Display(Name = "Confirmar contraseña")]
        [Compare("Password", ErrorMessage = "La contraseña y la contraseña de confirmación no coinciden.")]
        public string ConfirmPassword { get; set; }

        [Required]
        public int ClientID { get; set; }
        [ForeignKey("ClientID")]
        public virtual Client Client { get; set; }
    }

最后是IdentityModels类:

namespace TransportNEA.Models
{
    public class ApplicationUser : IdentityUser
    {
        [Required]
        public int ClientID { get; set; }
        [ForeignKey("ClientID")]
        public virtual Client Client { get; set; }
        public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
        {
            var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
        }
    }

    public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
    {
        public ApplicationDbContext()
            : base("IdentityConnection", throwIfV1Schema: false)
        {
        }

        public static ApplicationDbContext Create()
        {
            return new ApplicationDbContext();
        }
    }
}

我厌倦了尝试自己解决这个问题,有人可以告诉我,我需要修改或添加什么才能使其正常工作? 另外正如您在AspNetUsers中创建条目时所看到的,我想在客户端中创建一个条目并将它们关联起来

PS:我必须使用迁移才能使项目有效 (因为我收到一个可能导致约束的错误 “双关系”,我需要设置“删除无操作”而不是 级联,但我不知道如何使用流畅的API,这就是我使用的原因 迁移。为了生成数据库,我正在使用我的上下文 TNEAContext(不是ApplicationDbContext)

0 个答案:

没有答案