【发布时间】:2020-08-31 14:28:02
【问题描述】:
我正在尝试将记录与多张图像一起保存。 Order 类有图像,它是 orderImage 类的 iCollection,我想在其中保存每条记录的图像。
public class Order
{
[Key]
public int Id { get; set; }
[Display(Name = "Invoice ID")]
public string InvoiceId { get; set; }
[Display(Name = "Delivery Date")]
public string DeliveryDate { get; set; }
[Display(Name = "Shipping Location")]
public int ShippingLocationId { get; set; }
[Display(Name = "Branch ID")]
public string BranchId { get; set; }
[Display(Name = "Product Name")]
public string ProductName { get; set; }
[Display(Name = "Product Color")]
public string ProductColor { get; set; }
[Display(Name = "Product Size")]
public string ProductSize { get; set; }
[Display(Name = "Quantity")]
public string Quantity { get; set; }
[Display(Name = "Status")]
public string OrderStatusId { get; set; }
[Display(Name = "Sales Consultant")]
public string SalesPersonId { get; set; }
[Display(Name = "Order Note")]
public string OrderNote { get; set; }
[Display(Name = "Delivery Note")]
public string DeliveryNote { get; set; }
public ICollection<OrderImage> Images { set; get; }
}
public class OrderImage
{
[Key]
public int Id { set; get; }
public string Name { set; get; }
public long Size { set; get; }
public string Type { set; get; }
public string Path { set; get; }
public int orderId { set; get; }
}
然后我将图像保存在具有 orderID 的不同表中,以便可以识别。 控制器在下方。
[HttpPost]
public async Task<IActionResult> NewOrderAsync(Order _order, IFormFile[] _fileObj, OrderImage _orderImage)
{
if (_fileObj == null || _fileObj.Length == 0)
{
ViewData["NullImage"] = "Please select at least one Image";
}
foreach (IFormFile _image in _fileObj)
{
string _imageExtension = Path.GetExtension(_image.FileName);
if (_imageExtension == ".jpg" || _imageExtension == ".png" || _imageExtension == ".JPEG" || _imageExtension == ".webp")
{
var _imageFileName = _order.InvoiceId + "_" + _image.FileName;
var _imageSave = Path.Combine(_iWebHost.WebRootPath, "OrderImage");
var _stream = new FileStream(Path.Combine(_imageSave, _imageFileName), FileMode.Create);
await _image.CopyToAsync(_stream);
_orderImage.Name = _imageFileName;
_orderImage.Type = _imageExtension;
_orderImage.Path = _imageSave;
_orderImage.Size = _image.Length;
_orderImage.orderId = _order.Id;
await _context.OrderImage.AddAsync(_orderImage);
ViewData["Message"] = "Image is saved";
}
else
{
ViewData["Message"] = "Image is not saved";
}
}
_context.Add(_order);
await _context.SaveChangesAsync();
return RedirectToAction("Order");
}
我遇到的问题是,每当我保存图片时,我都能保存订单记录和上传图片的最后一张图片。根据数据库,OrderID 为 0,我尝试调试。订单 ID 返回 0。我确实需要关于我的做法是否正确的建议。 order 和 orderImages 有两个表。
【问题讨论】:
标签: asp.net-mvc entity-framework asp.net-core