我有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
答案 0 :(得分:0)
由于EF实现延迟加载的方式,可能正确保存了文件,但是没有正确加载。请尝试以下方法之一:
1)将Product上的Image属性更改为虚拟。这将允许延迟加载正常工作。
public virtual File Image { get; set; }
2)当您查询产品的上下文时,请向EF提供Include提示,以便在加载产品的同时加载Image属性。这种策略称为急切加载。
Product dbentry = context.Products.Include('Image').FirstOrDefault(p => p.ProductID == product.ProductID);