2014-08-29 32 views
0

当我测试(使用Fiddler Web Debugger)插入或通过web api将数据发布到省时,数据通常插入到数据库中,但是当我访问GetAll Web API服务的国家将返回NULL:Asp.net web api GetAll在执行POST后返回NULL

http://localhost:51372/api/province/ 

enter image description here

但之后,我做从我的VS 2013点快速重建解决方案对于网络版,然后再次访问来自网页API的GETALL服务我的国家是返回值:

enter image description here

我怎么能得到国家正在返回值后我做POST数据?

这是详细的代码,我使用

型号:

public class Province 
    {   
     public int ProvinceId { get; set; } 
     [Required] 
     public string ProvinceName { get; set; } 
     public DateTime CreatedAt { get; set; } 
     public DateTime UpdatedAt { get; set; } 
     //Foreign Key 
     [ForeignKey("Country")] 
     public int CountryId { get; set; } 
     //virtual 
     public virtual Country Country { get; set; } 
    } 

    public class Country 
    { 
     [ScaffoldColumn(false)] 
     public int CountryId { get; set; }   
     [Required] 
     [Index(IsUnique=true)] 
     [MaxLength(200)] 
     public string CountryName { get; set; } 
     public DateTime CreatedAt { get; set; } 
     public DateTime UpdatedAt { get; set; }   
    } 

库:

private SelsContext db = new SelsContext(); 
    //get all provinces 
    public IEnumerable<Province> GetAllProvince() 
    { 
     IEnumerable<Province> provinces = from c in db.Provinces select c; 
     return provinces; 
    } 

    //post provinces 
    public Models.Province Add(Models.Province item) 
    { 
     item.CreatedAt = DateTime.Now; 
     item.UpdatedAt = DateTime.Now; 

     db.Provinces.Add(item); 
     db.SaveChanges(); 

     return item; 
    } 

控制器:

// GET api/province 
[Queryable] 
public IQueryable<Province> Get() 
{ 
    return repository.GetAllProvince().AsQueryable(); 
} 

// POST api/province 
public HttpResponseMessage Post([FromBody]Province value) 
{ 
    repository.Add(value); 
    var response = Request.CreateResponse<Province>(HttpStatusCode.Created, value); 

    string uri = Url.Link("DefaultApi", new { id = value.ProvinceId }); 
    response.Headers.Location = new Uri(uri); 
    return response; 
} 

编辑: 我已经尝试过Ø远

在仓库:

public IEnumerable<Province> GetAllProvince() 
    { 
     IEnumerable<Province> provinces = db.Provinces.Include("Country");    
     return provinces; 
    } 

然后

public IEnumerable<Province> GetAllProvince() 
    { 
     IEnumerable<Province> provinces = db.Provinces.SqlQuery("select * from dbo.Provinces left join dbo.Countries on dbo.Countries.CountryId=dbo.Provinces.CountryId"); 

     return provinces; 
    } 

,但得到了同样的结果。

任何帮助将大大优于。

回答

2

在你的资料库,你可以这样做:

IEnumerable<Province> provinces = db.Provinces.Include("Country"); 
+0

我已经试过了,但还是同样的结果之前,任何想法? – 2014-09-01 05:49:11

+0

当我在一个新的项目中再次尝试你的方式时,只需要两张桌子,我发现它像一个魅力一样工作。谢谢 – 2014-09-02 11:29:55