无法通过实体 Freamwork C# asp.net MVC 保存文件

本文关键字:asp net MVC 保存文件 Freamwork 实体 | 更新日期: 2023-09-27 18:31:55

我有 2 个 clases 产品并像这样提交这个运气

 public  class Product
{
   public Product()
   {
       Image = new File();
   }
   public int ProductID { get; set; }
   public string Name { get; set; }
   public string Manufacturer { get; set; }
   public decimal SizeH { get; set; }
   public decimal SizeW { get; set; }
   public int Weight { get; set; }
   public string CPU { get; set; }
   public int Storage { get; set; }
   public string OpSys { get; set; }
   public int Price { get; set; }
  public  File Image { get; set; }
}
public  class File
{
   public int FileID { get; set; }
    public string FileType { get; set; }
  public   byte[] FileData { get; set; }
}

保存产品方法就是这样。我调试了它,信息状态良好,一切都来了 byte[],但在此之后,只有类文件没有保存,其他一切都保存正常

public void SaveProduct(Product product)
{
    if(product.ProductID==0)
    {
        context.Products.Add(product);
    }
    else
    {
        Product dbentry = context.Products.Find(product.ProductID);
        if (dbentry != null)
        {
             dbentry.Name = product.Name;
             dbentry.Manufacturer = product.Manufacturer;
             dbentry.OpSys = product.OpSys;
             dbentry.Price = product.Price;
             dbentry.SizeH = product.SizeH;
             dbentry.SizeW = product.SizeW;
             dbentry.Storage = product.Storage;
             dbentry.Weight = product.Weight;
             dbentry.Image = product.Image;
        }    
    }
context.SaveChanges();

}

数据库看起来像这样http://s017.radikal.ru/i423/1411/5f/da9ffc9c233e.png

无法通过实体 Freamwork C# asp.net MVC 保存文件

您的文件可能已正确保存,但由于 EF 实现延迟加载的方式而无法正确加载。请尝试以下操作之一:

1) 将"产品"上的"图像"属性更改为虚拟。这将允许延迟加载正常工作。

public virtual File Image { get; set; }

2) 查询产品的上下文时,请向 EF 提供包含提示,以便它在加载产品的同时加载 Image 属性。此策略称为预先加载。

Product dbentry = context.Products.Include('Image').FirstOrDefault(p => p.ProductID == product.ProductID);