2014-08-29 54 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