Как использовать Identity с Entity Framework, чтобы установить связь один к одному с таблицами AspNetUser - PullRequest
0 голосов
/ 25 сентября 2018

В моем сценарии у пользователя есть лодка, а у лодки есть несколько заметок.

Я использую шаблон проекта Identity Mvc по умолчанию, но я никогда не использовал Identity для создания каких-либо связей с другими таблицами.Я использовал Identity только для входа без каких-либо отношений

У кого-нибудь есть примеры того, как связать таблицу aspNetUsers с другими таблицами?

Класс лодки

 public class Boat: Entity
    {

        public string Nome { get; private set; }
        public bool Ativo { get; private set; }    
        public bool Excluido { get; private set; }    
        public int SapId { get; private set; }    
        public int CapacidadeAgua { get; private set; }    
        public int CapacidadeOleo { get; private set; }    
        public int Velocidade { get; private set; }    
        public decimal AreaReal { get; private set; }    
        public decimal AreaProgramada { get; private set; }    
        public decimal AreaLivre { get; private set; }    
        public string Email { get; private set; }    
        public string Setor { get; private set; }   
        public DateTime DataCadastro { get; private set; }        
        public Guid? ClasseBarcoId { get; set; }

        public virtual ClasseBarco ClasseBarco { get; set; }

        public Barco(
            String nome, 
            bool ativo, 
            bool excluido, 
            int sapid, 
            int capacidadeAgua,
            int capacidadeOleo,
            int velocidade,
            string email,
            string setor,               
            DateTime dataCadastro)
        {
            Nome = nome;
            Ativo = ativo;
            Excluido = excluido;
            SapId = sapid;
            CapacidadeAgua = capacidadeAgua;
            CapacidadeOleo = capacidadeOleo;
            Velocidade = velocidade;
            Email = email;
            Setor = setor;
            DataCadastro = dataCadastro;

            ClasseBarco = new ClasseBarco();
        }
      }

1 Ответ

0 голосов
/ 25 сентября 2018

Вот пример, где вы найдете один-ко-многоотличный корабль.

Структура пользователя:

public class ApplicationUser : IdentityUser
{
    public ApplicationUser()
    {

        this.UserProducts = new HashSet<UserProduct>();

    }
    [Required]
    public string CompanyName { get; set; }
    [Required]
    public string ContactPerson { get; set; }
    [Required]
    public string ContactNumber { get; set; }
    [Required]
    public string PermanentAddress { get; set; }
    [Required]
    public string CorrespondenceAddress { get; set; }
    [Required]
    public string TIN { get; set; }
    public string PAN { get; set; }
    public string ServiceTaxNumber { get; set; }
    public string Category { get; set; }
    public virtual ICollection<UserProduct> UserProducts { get; set; }

    public ClaimsIdentity GenerateUserIdentity(ApplicationUserManager manager)
    {
        // Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
        var userIdentity = manager.CreateIdentity(this, DefaultAuthenticationTypes.ApplicationCookie);
        // Add custom user claims here
        return userIdentity;
    }

    public Task<ClaimsIdentity> GenerateUserIdentityAsync(ApplicationUserManager manager)
    {
        return Task.FromResult(GenerateUserIdentity(manager));
    }
}

DbContext:

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

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

        public virtual DbSet<Category> Categories { get; set; }
        public virtual DbSet<Product> Products { get; set; }
        public virtual DbSet<Unit> Units { get; set; }
        public virtual DbSet<UserProduct> UserProducts { get; set; }
    }

Обратитесь к этому для одногос одним отношением в платформе сущностей:
Настройка отношения один-к-нулю или одному в платформе сущностей 6

См. пример ниже:
Мы реализуем одно-Отношение к нулю или одному между следующими Student и StudentAddress сущностями

public class Student
{
    public int StudentId { get; set; }
    public string StudentName { get; set; }

    public virtual StudentAddress Address { get; set; } //Can have only one address
}

public class StudentAddress 
{
    public int StudentAddressId { get; set; }
    public string Address1 { get; set; }
    public string Address2 { get; set; }
    public string City { get; set; }
    public int Zipcode { get; set; }
    public string State { get; set; }
    public string Country { get; set; }

    public virtual Student Student { get; set; }  //Single Student 
}
...