Отношения один ко многим всегда приносят мне пустоту - PullRequest
2 голосов
/ 03 октября 2019

Я пытаюсь использовать Entity Framework с первым кодом и свободным API для реализации отношения один ко многим

У меня есть два класса

namespace Mantenimiento.Business.Entities
{
    public class Personal : Entity
    {
        [Key]
        public int Id { get; set; }
        public int? Dni { get; set; }
        public string Nombre { get; set; }
        public string Apellido { get; set; }

        public string Cuil { get; set; }
        public string Legajo { get; set; }

        [ForeignKey("Dni")]
        public  ICollection<ContactoEmergencia> Contacto { get; set; }
}

namespace Mantenimiento.Business.Entities
{
    public class ContactoEmergencia : Entity
    {
        [Key]
        public int Id { get; set; }
        public int? Dni { get; set; }
        public string ApellidoNombre { get; set; }
       public string Vinculo { get; set; }
        public string Domicilio { get; set; }
        public string telefono { get; set; }
        public string Comentario { get; set; }
        public int CreateUserId { get; set; }
        [ForeignKey("Dni")]
        public virtual Personal Personal { get; set; }
    }
}

Это мой dbContext

            #region personals
            modelBuilder.Entity<Personal>().ToTable("InfoPersonal").HasKey(t => t.Id);
            modelBuilder.Entity<Personal>().Property(c => c.Id).UseSqlServerIdentityColumn().IsRequired();
            modelBuilder.Entity<Personal>().Property(c => c.CreatedDate).HasDefaultValue(DateTime.Now);
            modelBuilder.Entity<Personal>().Property(c => c.LastModifiedDate).HasDefaultValue(DateTime.Now);
            modelBuilder.Entity<Personal>().Property(c => c.Deleted).HasDefaultValue(false);
            modelBuilder.Entity<Personal>().HasMany<ContactoEmergencia>(c => c.Contacto).WithOne(p => p.Personal).HasForeignKey(s => s.Dni);
#endregion
            #region contactoEmergencias
            modelBuilder.Entity<ContactoEmergencia>().ToTable("InfoEmergencia").HasKey(d => d.Dni);
            modelBuilder.Entity<ContactoEmergencia>().Property(c => c.CreatedDate).HasDefaultValue(DateTime.Now);
            modelBuilder.Entity<ContactoEmergencia>().Property(c => c.LastModifiedDate).HasDefaultValue(DateTime.Now);
            modelBuilder.Entity<ContactoEmergencia>().Property(c => c.Deleted).HasDefaultValue(false);
            #endregion

И мой запрос

        return await _context.personals
            .Include(c => c.Contacto)
            .Where(p => p.Deleted == false)
            .OrderBy(s => s.Apellido)
            .ToListAsync(

);

Но свойства всегда пустые. мне нужно связать Personal.Di с Contacto.Dni, мне пришлось сменить ключ?

1 Ответ

0 голосов
/ 03 октября 2019

Вы должны удалить атрибут ForeignKey из Персональной сущности. В отношениях один ко многим только дочерняя сущность может принимать ForeignKey.

...