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

Posted

技术标签:

【中文标题】每次启动控制台应用程序时,如何更新表中的信息?【英文标题】:How can i update information in a table each time i launch my console app? 【发布时间】:2020-12-27 23:24:48 【问题描述】:

我想在每次启动控制台应用程序时更新一个表。我的问题是 _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);
                            
                        
                    

                
            
        

     

【问题讨论】:

if (_exe.DbContext.ExecutionPerimetreProduitNonLineaire == null) 你检查它的空值,然后你 Add 到它。结局不会很好。 @mjwills 如果我要删除其中的 wtv,是否有理由检查它是否为空? 【参考方案1】:

你已经声明了它,但没有分配任何东西给它。在某些时候你需要创建它:

_exe = new ExecutionPerimetreProduitNonLineaireRepository();

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

【讨论】:

以上是关于每次启动控制台应用程序时,如何更新表中的信息?的主要内容,如果未能解决你的问题,请参考以下文章

每次构建应用程序时,netbeans 中的 MySQL 表都会被清除

无法自动更新表格视图中的子值

C# - 实时控制台输出重定向

在 excel 中手动添加行,最后使用 C#.net 更新到表中

Java和HSQLDB,更新后如何自动添加列

Hbase - 写操作