2016-07-05 69 views
-1

我一直在进行大量搜索,但尚未找到有关此问题的任何相关信息。我想知道是否有人可以指出我在正确的方向,我可以如何实现以下内容:使用实体框架将api端点请求保存到数据库

所以我试图做的是做一个API端点请求,并将结果保存到我的数据库上结束。

这里是我的控制器:

public class Reference_ManufacturersController : ApiController 
{ 
    private DataEntities db = new DataEntities(); 
    static string _address = "http://localhost:57454/api/Reference_Manufacturers?format=json"; 
    private Reference_Manufacturers result; 

    // GET: api/Reference_Manufacturers 
    public async Task<IEnumerable<Reference_Manufacturers>> GetReference_Manufacturers() 
    { 
     Reference_Manufacturers resultset = await GetResponse(); 
     db.Reference_Manufacturers.Add(resultset); 
     await db.SaveChangesAsync(); 
     return db.Reference_Manufacturers; 
    } 

    private async Task<Reference_Manufacturers> GetResponse() 
    { 
     var client = new HttpClient(); 
     HttpResponseMessage response = await client.GetAsync(_address); 
     response.EnsureSuccessStatusCode(); 
     result = await response.Content.ReadAsAsync<Reference_Manufacturers>(); 
     return result; 
    } 
} 

什么,当我运行出现这种情况是我得到以下异常:

ExceptionMessage

无法反序列化当前的JSON阵列(例如,[1 ,2,3])转换为类型'DIA_FirearmsAPIversion2.Models.Reference_Manufacturers',因为该类型需要JSON对象(例如{“name”:“value”})才能正确地反序列化。要解决这个错误,或者将JSON更改为JSON对象(例如{“name”:“value”})或将反序列化类型更改为实现集合接口(例如ICollection,IList)的数组或类型,从JSON数组中反序列化。 JsonArrayAttribute也可以添加到类型中,以强制它从JSON数组反序列化。路径'',第1行,位置1.

我在做什么错?

+2

你可以展示一个json的例子吗? – stuartd

+0

[链接](http://i693.photobucket.com/albums/vv293/saturobi360/ReferenceManufacturer_zpszktksoqf.jpg) – saturobi360

+0

很确定你从'_address'返回的json不能映射到'Reference_Manufacturers' –

回答

0

我想通了什么,我俯视,做错了。 我没有使用容器来保存所有返回的值。

public class Reference_ManufacturersController : ApiController 
{ 
    private DataEntities db = new DataEntities(); 
    static string _address = "http://localhost:57454/api/Reference_Manufacturers?format=json"; 
    private List<Reference_Manufacturers> result; 

    // GET: api/Reference_Manufacturers 
    public async Task<IEnumerable<Reference_Manufacturers>> GetReference_Manufacturers() 
    { 
     List<Reference_Manufacturers> resultset = await GetResponse(); 
     foreach (Reference_Manufacturers manu in resultset) 
     { 
      db.Reference_Manufacturers.Add(manu); 
     } 
     await db.SaveChangesAsync(); 
     return db.Reference_Manufacturers; 
    } 

    private async Task<List<Reference_Manufacturers>> GetResponse() 
    { 
     var client = new HttpClient(); 
     HttpResponseMessage response = await client.GetAsync(_address); 
     response.EnsureSuccessStatusCode(); 
     result = await response.Content.ReadAsAsync<List<Reference_Manufacturers>>(); 
     return result; 
    }}