C#Windows服务EntityFramework AddRange SaveChangesAsync崩溃服务

时间:2019-03-04 07:51:48

标签: c# entity-framework asynchronous windows-services savechanges

我使用C#语言处理Windows服务 和使用EntityFrameWork 我用AddRange添加列表 并通过SaveChangesAsync()保存; 当运行SaveChangesAsync程序崩溃并关闭时。 但使用SaceChanges()可以毫无问题地保存。

    public class ApplicationDbContext : IdentityDbContext<IUnitOfWork>
{
    public ApplicationDbContext() : base("DefaultConnection")
    {
        Configuration.LazyLoadingEnabled = true;
        ((IObjectContextAdapter)this).ObjectContext.CommandTimeout = 180;

    }}

UOW:

  public async Task<int> SaveAllChangesAsync()
    {
        return await SaveChangesAsync();
    }
    public IEnumerable<TEntity> AddThisRange<TEntity>(IEnumerable<TEntity> entities) where TEntity : class
    {
        return ((DbSet<TEntity>)Set<TEntity>()).AddRange(entities);
    }

使用:

      private readonly IDbSet<WebUrl> _webUrls;
    private readonly List<WebUrl> _tempWebUrlsToInsert;

    public MalwareDetectingManager(IUnitOfWork uow)
    {
        _uow = uow;
        _webUrls = uow.Set<WebUrl>();}

创建列表:

 var newWebUrl = new WebUrl
        {
            Url = normalizedUrl,
            Status = UrlStatus.BadUrl,
            LastUpdate = DateTime.Now,
            AddedVersion = _version,
            UpdatedVersion = _version
        };

        _tempWebUrlsToInsert.Add(newWebUrl);

保存:

 _uow.AddThisRange(_tempWebUrlsToInsert);
            await _uow.SaveAllChangesAsync(); //Crash Program

0 个答案:

没有答案