我有 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
您的文件可能已正确保存,但由于 EF 实现延迟加载的方式而无法正确加载。请尝试以下操作之一:
1) 将"产品"上的"图像"属性更改为虚拟。这将允许延迟加载正常工作。
public virtual File Image { get; set; }
2) 查询产品的上下文时,请向 EF 提供包含提示,以便它在加载产品的同时加载 Image 属性。此策略称为预先加载。
Product dbentry = context.Products.Include('Image').FirstOrDefault(p => p.ProductID == product.ProductID);