ASP.NET Core多个文件上传,SQL Server标识列问题

时间:2018-12-08 22:10:59

标签: sql-server

我在ASP.NET Core中上传多个文件时遇到问题。一次上传多个文件时,我从SQL Server数据库中收到此错误:

  

SqlException:当IDENTITY_INSERT设置为OFF时,无法在表'photos'中为标识列插入显式值。

我的代码:

    public async Task<IActionResult> Create(Photos photos)
    {
        if (ModelState.IsValid)
        {
            var date = DateTime.UtcNow.AddHours(4);
            var photoAddDate = photos.PhotoAddedData = date.ToString("yyyy- 
            MM-dd','HH:mm:ss", CultureInfo.InvariantCulture);

            foreach (var file in photos.FormFile)
            {
                var filePath = Path.Combine(_hostingEnvironment.WebRootPath, 
                Path.GetFileName(file.FileName));
                photos.PhotoPath = "/" + Path.GetFileName(file.FileName);
                var stream = new FileStream(filePath, FileMode.Create);
                await file.CopyToAsync(stream);
                photos.PhotoPath = filePath;
                _context.Photos.Add(photos);
                await _context.SaveChangesAsync();
            }

            return RedirectToAction(nameof(Index));
      }

然后我尝试使用此代码:

var transaction = _context.Database.BeginTransaction();
_context.Database.ExecuteSqlCommand("SET IDENTITY_INSERT[dbo].[photos]ON;");
_context.Photos.Add(photos);
await _context.SaveChangesAsync();
_context.Database.ExecuteSqlCommand("SET IDENTITY_INSERT[dbo].[photos] OFF;");
transaction.Commit();

并出现另一个错误:

  

SqlException:当IDENTITY_INSERT设置为ON或将复制用户插入到NOT FOR REPLICATION身份列中时,必须为表“照片”中的身份列指定显式值。

有人可以帮我吗?非常感谢

0 个答案:

没有答案