使用asp.net core从MS EntityFrameworkCore中获取Json文件的记录

时间:2017-12-12 11:53:11

标签: c# json rest api asp.net-web-api

桌面上有一个JSON文件。 我希望这个API获取该文件,然后在该文件中添加准备显示和请求的所有记录。

现在它正在将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();
        }
    }

2 个答案:

答案 0 :(得分: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();
                    }
                }
            }

答案 1 :(得分: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);
        }
    }
}

每当为控制器发出服务呼叫时。在那个时候它将调用构造函数。如果我们将代码移动到单独的方法并在需要时调用此方法,而不是这样。它将提高性能,并删除任何不必要的调用构造函数的调用。