无法通过实体freamwork C#asp.net mvc保存文件
我有2个类别的产品和文件这样运气无法通过实体freamwork C#asp.net mvc保存文件,c#,asp.net,asp.net-mvc,entity-framework,C#,Asp.net,Asp.net Mvc,Entity Framework,我有2个类别的产品和文件这样运气 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; se
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; }
}
保存产品的方法是这样的。我对它进行了调试,信息以良好的状态到达这个状态,所有内容都是字节[],但在这个唯一的类文件没有保存之后,其他所有内容都保存OK
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();
}
数据库看起来像这样
您的文件可能已正确保存,但由于EF执行延迟加载的方式,无法正确加载。请尝试以下操作之一: 1) 将产品上的图像属性更改为虚拟。这将允许延迟加载正常工作
public virtual File Image { get; set; }
2) 在查询产品的上下文时,向EF提供Include提示,以便它在加载产品的同时加载Image属性。这种策略称为急加载
Product dbentry = context.Products.Include('Image').FirstOrDefault(p => p.ProductID == product.ProductID);
您确定您的
产品.Image
包含来自数据库的有效条目吗?您是如何为产品->文件关系配置EF的?我在DB的产品表中看到一个Image\u FileId字段,它是自动生成的吗?enty不是问题所在,问题是如果产品是新的,并且ID=0,则存在context.Products.Add(产品);这不起作用evryting exept图像被保存并显示得很好它是由entiti freamwork代码ferst db set future这里是代码公共类EFDbContext:DbContext{public DbSet Products{get;set;}public DbSet Files{get;set;}如果(product.ProductID==0){context.Products.Add(product);}您能给我们展示产品和文件表的内容吗?内容是什么意思?这是仅用于测试的内容,但DB可以工作