我需要幫助才能從Web Api獲取數據。我用EF與名爲 「Reichweites」 和 「點」(孩子)兩個表將C#對象的WebApi響應轉換爲JSON
這是我的DTO類:
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;
}
}
}
而且我的數據模型:
1:N的關係
主表是Reichweites
- 編號
- 名稱
- Potenzial
- Geschlecht
- CpGRP
- ZielGRP
- Benutzer
子表,點
- 編號
- GRP
- RW_TV
- Cost_TV
- Rw_ZuWGS
- Cost_I_Rea
- ReichweiteId FK
我想以這種格式提供數據:
[
{
"User":"testuser",
"CPGRP":21321321,
"Sex":"men",
"Name": "test",
"Potenzial":213213,
"ReichweiteID":0,
"ZielGRP": 21321321
"PointList":[
{
"Cost_I_Rea":"22202771.01",
"Cost_TV":".0" ,
"GRP":10,
"ID":0,
"ReichweiteID_F":1,
"RW_TV":"9.603",
"RW_Zuwgs":"9.603",
},
{
"Cost_I_Rea":"22202771.01",
"Cost_TV":".0" ,
"GRP":10,
"ID":0,
"ReichweiteID_F":1,
"RW_TV":"9.61103",
"RW_Zuwgs":"9.6043",
},
{
"Cost_I_Rea":"22202771.01",
"Cost_TV":".0" ,
"GRP":10,
"ID":0,
"ReichweiteID_F":1,
"RW_TV":"9.61103",
"RW_Zuwgs":"9.6043",
},
{
"Cost_I_Rea":"22202771.01",
"Cost_TV":".0" ,
"GRP":10,
"ID":0,
"ReichweiteID_F":1,
"RW_TV":"9.61103",
"RW_Zuwgs":"9.6043",
}
]
}
]
一些額外的要求是,我必須fiter ID和用戶名。
這是我現在如何嘗試,但它不工作。
你需要什麼來更好地理解我的問題?
[responseTyp的(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;
}
我不明白這個問題,你到底有什麼麻煩?一旦你用數據填充模型,你所要做的就是在控制器this.Json(帝國);它會將c#對象轉換成JSON,就像你一樣 – 2014-10-27 13:29:41
我不知道我該如何編寫獲取數據的get方法,比如json示例 – 2014-10-27 13:34:11
我的意思是,你是否已經正確地返回了所有數據c#對象?並只需要它轉換爲JSON? – 2014-10-27 13:58:34