Good afternoon. I am developing an Api Web with ASP.Net core but I have a problem with the EF Core. It turns out that I have a BBDD SQL server but it is not relational (By this I mean that I do not have the tables related to each other in the Database) and when doing include () in one of the tables.
To summarize.
I have a header table and a line table. In the controller when I do the query to the database, it brings me correctly the data of the header but the data of the lines does not.
I put some screenshots of how I have it configured.
[HttpGet]
public IEnumerable<CabeceraPedidoProveedor> GetOrdenes()
{
var ret = _ctx.CabeceraPedidoProveedor.Where(x=>x.SeriePedido == "F")
.Include(e=> e.LineasPedidoProveedor).ToList();
return ret;
}
/ Header ModelProviderProvider.cs
public partial class CabeceraPedidoProveedor
{
public CabeceraPedidoProveedor()
{
LineasPedidoProveedor = new HashSet<LineasPedidoProveedor>();
}
public Guid IdPedidoPro { get; set; }
public short CodigoEmpresa { get; set; }
public short EjercicioPedido { get; set; }
public string SeriePedido { get; set; }
public int NumeroPedido { get; set; }
public DateTime FechaPedido { get; set; }
public short NumeroLineas { get; set; }
public string CodigoProveedor { get; set; }
public string RazonSocial { get; set; }
public virtual Enumerable<LineasPedidoProveedor>LineasPedidoProveedor { get; set; } }
/ Model LineasPedidoProveedor.cs public partial class LineasPedidoProvider {
public short CodigoEmpresa { get; set; }
public short EjercicioPedido { get; set; }
public string SeriePedido { get; set; }
public int NumeroPedido { get; set; }
//public short CodigoEmpresaCabecera { get; set; }
//public short EjercicioPedidoCabecera { get; set; }
//public string SeriePedidoCabecera { get; set; }
//public short NumeroPedidoCabecera { get; set; }
public short Orden { get; set; }
public Guid LineasPosicion { get; set; }
public virtual CabeceraPedidoProveedor Cabecera { get; set; }}
// Context
public partial class MiContext : DbContext
{
public MiContext (DbContextOptions options
):base(options)
{
}
public virtual DbSet<CabeceraPedidoProveedor> CabeceraPedidoProveedor { get; set; }
public virtual DbSet<LineasPedidoProveedor> LineasPedidoProveedor { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<CabeceraPedidoProveedor>(entity =>
{
entity.HasKey(e => new { e.CodigoEmpresa, e.EjercicioPedido, e.SeriePedido, e.NumeroPedido });
entity.HasIndex(e => new { e.CodigoEmpresa,e.EjercicioPedido,e.SeriePedido,e.NumeroPedido})
.HasName("CabeceraPedidoProveedor_Pedido");
entity.ToTable("CabeceraPedidoProveedor");
entity.Property(e => e.CodigoEmpresa).HasDefaultValueSql("((0))");
entity.Property(e => e.EjercicioPedido).HasDefaultValueSql("((0))");
entity.Property(e => e.SeriePedido)
.HasMaxLength(10)
.IsUnicode(false)
.HasDefaultValueSql("('')");
entity.Property(e => e.NumeroPedido)
.HasDefaultValueSql("((0))");
entity.Property(e => e.NumeroLineas).HasDefaultValueSql("((0))");
entity.Property(e => e.FechaPedido)
.HasColumnType("datatime")
.HasDefaultValueSql("(getDate())");
//entity.HasMany(e => e.LineasPedido);
entity.HasMany(e => e.LineasPedidoProveedor)
.WithOne(e => e.Cabecera).HasConstraintName("FK_Lineas_Cabecera");
//.HasForeignKey(e=>new { e.CodigoEmpresa, e.EjercicioPedido, e.SeriePedido, e.NumeroPedido });
});
modelBuilder.Entity<LineasPedidoProveedor>(entity=>
{
entity.HasKey(e => new { e.CodigoEmpresa, e.EjercicioPedido, e.SeriePedido, e.NumeroPedido, e.Orden,e.LineasPosicion });
//entity.HasIndex(e => new {e.CodigoEmpresa,e.EjercicioPedido,e.SeriePedido,e.NumeroPedido,e.Orden,e.LineasPosicion })
// .HasName("LineasPedidoProveedor_Pedido");
entity.ToTable("LineasPedidoProveedor");
entity.Property(e => e.CodigoEmpresa).HasDefaultValueSql("((0))");
entity.Property(e => e.EjercicioPedido).HasDefaultValueSql("((0))");
entity.Property(e => e.SeriePedido)
.HasMaxLength(10)
.HasDefaultValueSql("('')");
entity.Property(e => e.NumeroPedido).HasDefaultValueSql("((0))");
entity.HasOne(d => d.Cabecera)
.WithMany(p => p.LineasPedidoProveedor);
});
}
My exit is this:
[{"idPedidoPro":"18a351a6-c228-401c-b90c-dd9eb66278f9","codigoEmpresa":9999,"ejercicioPedido":2017,"seriePedido":"F","numeroPedido":108,"fechaPedido":"2017-09-14T00:00:00","numeroLineas":4,"codigoProveedor":"000000","razonSocial":"PROVEED VARIOS","lineasPedidoProveedor":[]}]
As you can see, the data in the parent table (the header) brings them well, but LineasPEdidoProveedor comes in white. I made sure you have data.
I do not know where to put a hand to this. I await your help.
Greetings!