i need help to get data from web Api. I use EF with two tables named "Reichweites" and "Points"(child)
This is my DTO class:
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;
namespace xms_ef_vers1.Models
{
public class ReichweitePointsDto
{
public ReichweitePointsDto() { }
public ReichweitePointsDto(Reichweite reichweite)
{
ReichweiteID = reichweite.Id;
Name = reichweite.Name;
Potenzial = reichweite.Potenzial;
Geschlecht = reichweite.Geschlecht;
CPGRP = reichweite.CpGRP;
ZielGRP = reichweite.ZielGRP;
Benutzer = reichweite.Benutzer;
PointListe = new List<PointListDto>();
foreach (Points item in reichweite.PointListe)
{
PointListe.Add(new PointListDto(item));
}
}
[Key]
public int ReichweiteID { get; set; }
public string Name { get; set; }
//[Required]
public int Potenzial { get; set; }
//[Required]
public string Geschlecht { get; set; }
//[Required]
public int CPGRP { get; set; }
public int ZielGRP { get; set; }
public string Benutzer { get; set; }
public virtual List<PointListDto> PointListe { get; set; }
public Reichweite ToEntity()
{
Reichweite reich = new Reichweite
{
Id = ReichweiteID,
Name = Name,
Potenzial = Potenzial,
Geschlecht = Geschlecht,
CpGRP = CPGRP,
ZielGRP = ZielGRP,
Benutzer = Benutzer,
PointListe = new List<Points>()
};
foreach (PointListDto item in PointListe)
{
reich.PointListe.Add(item.ToEntity());
}
return reich;
}
}
}
And my Data Model:
1:n relation
Main Table is Reichweites
- Id
- Name
- Potenzial
- Geschlecht
- CpGRP
- ZielGRP
- Benutzer
Child Table is Points
- Id
- GRP
- RW_TV
- Cost_TV
- Rw_ZuWGS
- Cost_I_Rea
- ReichweiteId fk
I want provide the data in this format:
[
{
"User":"testuser",
"CPGRP":21321321,
"Sex":"men",
"Name": "test",
"Potenzial":213213,
"ReichweiteID":0,
"ZielGRP": 21321321
"PointList":[
{
"Cost_I_Rea":"22202771.01",
"Cost_TV":"213213210.0" ,
"GRP":10,
"ID":0,
"ReichweiteID_F":1,
"RW_TV":"9.603",
"RW_Zuwgs":"9.603",
},
{
"Cost_I_Rea":"22202771.01",
"Cost_TV":"213213210.0" ,
"GRP":10,
"ID":0,
"ReichweiteID_F":1,
"RW_TV":"9.61103",
"RW_Zuwgs":"9.6043",
},
{
"Cost_I_Rea":"22202771.01",
"Cost_TV":"213213210.0" ,
"GRP":10,
"ID":0,
"ReichweiteID_F":1,
"RW_TV":"9.61103",
"RW_Zuwgs":"9.6043",
},
{
"Cost_I_Rea":"22202771.01",
"Cost_TV":"213213210.0" ,
"GRP":10,
"ID":0,
"ReichweiteID_F":1,
"RW_TV":"9.61103",
"RW_Zuwgs":"9.6043",
}
]
}
]
some additional requirement is that i must fiter by id and user name.
This is how i try it now but it do not work.
What do you need to understand my question better?
[ResponseType(typeof(Reichweite1Dto))]
public async Task<IHttpActionResult> GetReichweite(int id)
{
var reich = await db.Points.Include(b => b.ReichweiteId)
.Select(b =>
new ReichweitePointsDto ()
{
Benutzer = b.Reichweite.Benutzer,
Name = b.Reichweite.Name,
Geschlecht = b.Reichweite.Geschlecht,
CPGRP = b.Reichweite.CpGRP,
Potenzial = b.Reichweite.Potenzial,
ZielGRP = b.Reichweite.ZielGRP,
PointListe = (from item in reich
select new Points()
{
GRP = item.GRP,
RW_TV = item.RW_TV,
Cost_TV = item.Cost_TV,
Rw_ZuWGS = item.RW_Zuwgs,
Cost_I_Rea = item.Cost_I_Rea,
}).ToList()
};
return reich;
}