2017-12-12 10 views
0

デスクトップにJSONファイルがあります。 このAPIでそのファイルを取得し、そのファイル内のすべてのレコードを表示および要求のために追加します。asp.netコアを使用してMS EntityFrameworkCoreのJsonファイルからレコードを取得します

今はJSONファイルからオブジェクトにすべてをインポートしていますが、それ以上は行けません。

誰も私を助けてくださいすることができます私は、APIとASP.Net

に新しいです。

あなたは、コンストラクタ内のコード、そのないそのように書くための良い方法を書かれているあなたに

[Route("api/[controller]")] 
public class TodoController : Controller 
{ 

    private readonly TodoContext _context; 
    public TodoController(TodoContext context) 
    { 

     _context = context; 
     if (_context.TodoItems.Count() == 0) 
     { 
      string allText = System.IO.File.ReadAllText(@"C:\Users\Alex\Desktop\Prog\A.json"); 
      object jsonObject = JsonConvert.DeserializeObject(allText); 

      int x = jsonObject. 
      _context.TodoItems.Add(new TodoItems { Id = '1', Name = "Item1", IsComplete = false, }); 
      _context.SaveChanges(); 
     } 
    } 

答えて

0

ありがとうございます。あなたができることは、あなたの要求に応じてGET/POSTメソッドを追加することでしょう。あなたのケースを実行するためにGET APIコールを作成しました。下記のコードスニペットを確認してください。

  [Produces("application/json")] 
      [Route("api/TodoController")] 
      public class TodoControllerController : Controller 
      { 
       private readonly TodoContext _context 

       public void Get() 
       { 
        _context = context; 
        if (_context.TodoItems.Count() == 0) 
        { 
         string allText = System.IO.File.ReadAllText(@"C:\Users\Alex\Desktop\Prog\A.json"); 
         object jsonObject = JsonConvert.DeserializeObject(allText); 

         int x = jsonObject. 
         _context.TodoItems.Add(new TodoItems { Id = '1', Name = "Item1", IsComplete = false, }); 
         _context.SaveChanges(); 
        } 
       } 
      } 
0
[Produces("application/json")] 
[Route("api/ToDo")] 
public class ToDoController : Controller 
{ 
    private TodoContext _context; 
    public TodoController(TodoContext context) 
    { 
     _context = context; 
    } 

    [HttpPost] 
    [Route("Upload")] 
    public HttpResponseMessage UploadData() 
    { 
     try 
     { 
      if (_context.TodoItems.Count() == 0) 
      { 
       string allText = System.IO.File.ReadAllText(@"C:\Users\Alex\Desktop\Prog\A.json"); 
       object jsonObject = JsonConvert.DeserializeObject(allText); 

       int x = jsonObject. 
       _context.TodoItems.Add(new TodoItems { Id = '1', Name = "Item1", IsComplete = false, }); 
       _context.SaveChanges(); 
      } 
     } 
     catch (Exception ex) 
     { 
      return new HttpResponseMessage(HttpStatusCode.InternalServerError); 
     } 
    } 
} 

サービスコールは、コントローラのために出るたび。その時、それはコンストラクタを呼び出すでしょう。代わりに、コードを別のメソッドに移動し、必要に応じてこのメソッドを呼び出すとします。パフォーマンスが向上し、コンストラクタを望ましくなく呼び出す呼び出しも削除されます。

+0

どうすればよいですか? –

+0

このメソッドを使用することができますが、要求はすべてのレコードを取得するために使用されます。 レコード数がゼロの場合、レコードを挿入してからコレクションを返し、それ以外の場合はコレクションを返します。 postメソッドの代わりに、get requestとして変更できます。 –

関連する問題