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