我需要帮助才能从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