我在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身份列中时,必须为表“照片”中的身份列指定显式值。
有人可以帮我吗?非常感谢