每次启动控制台应用程序时,如何更新表中的信息?

问题描述

我想在每次启动控制台应用程序时更新一个表。我的问题是_exe为空,我不知道如何为其分配DbContext中的值。有人可以引导我走上正确的道路吗?我是新来的人。

    class Program 

    {
        private static readonly ExecutionPerimetreProduitNonLineaireRepository _exe;

        static void Main(string[] args)
        {
            using (var client = new HttpClient())
            {

                client.BaseAddress = new Uri("http://api.atlas.intranet/v1/produits/");
                //HTTP GET
                var responseTask = client.GetAsync("ayantdroits");
                responseTask.Wait();

                var result = responseTask.Result;
                if (result.IsSuccessstatusCode)
                {
                    var readTask = result.Content.ReadAsAsync<ExecutionPerimetreProduitNonLineaire[]>();
                    readTask.Wait();

                    var perimetreProduits = readTask.Result;

                    foreach (var perimetreProduit in perimetreProduits)
                    {
                        Console.WriteLine("\"louiseProduitId\":{0},\"startDate\":{1},\"endDate\":{2}",perimetreProduit.LouiseProduitId,perimetreProduit.StartDate,perimetreProduit.EndDate);
                    }

                    Console.WriteLine("after pull");

                    if (perimetreProduits != null)
                    {
                        _exe.DbContext.Database.ExecutesqlRaw("TruncATE TABLE [Acq.ExecutionPerimetreProduitNonLineaire]");
                        _exe.DbContext.SaveChanges();

                        if (_exe.DbContext.ExecutionPerimetreProduitNonLineaire == null)
                        {
                            foreach (var perimetreProduit in perimetreProduits)
                            {
                                _exe.DbContext.ExecutionPerimetreProduitNonLineaire.Add(perimetreProduit);
                            }
                        }
                    }

                }
            }
        }

    } 

解决方法

您已声明它,但未为其分配任何内容。在某些时候,您需要创建它:

_exe = new ExecutionPerimetreProduitNonLineaireRepository();

您还需要检查是否在应用程序的配置文件中设置了ConnectionString。