使用实体框架加载项目,其中图像存在于目录中



我有一个带产品的表。该列之一是product_no。我在ASP.NET MVC应用程序中也有一个目录,其中我存储了类似于product_no的名称的产品图像。例如。FGFCA0004259.png

我想显示来自img目录中仅具有图像的数据库中的产品。

foreach (var item in Model)
{
    var image_url = "http://888888.saleslife360.com/888888Images/ProductImages/";
    var img = image_url + item.product_no+ ".png";
}

那是我用来检索图像的示例代码。

Dim products As List(Of Product) = New List(Of Product)
Dim imagePaths As String() = Directory.GetFiles("*.png")
Dim productNumbers As String() = imagePaths _
    .Select(Function(s) Path.GetFileNameWithoutExtension(s)) _
    .ToArray
Using context As YourDbContext = New YourDbContext
    products = context.Products _
        .Where(Function(p) productNumbers.Contains(p.product_no)) _
        .ToList
End Using

我不知道您是否正在使用任何ORM,但从理论上讲,您有几个选择。

  1. 使用Imagestorage.productimages中的图像名称并将其作为一部分发送数据库查询中的过滤器。[从产品中选择 *product_no in(imgid1,imgid2 ..)]

  2. 从数据库中获取产品,然后加入 Imagestorage.productimages仅获取图像的产品。

Imagestorage是将实现从您的目录列出产品图像的功能的类。

将图像存储在目录中的最佳方法是将整个URL保存到表中。

因为在您的情况下,您使用的是产品ID a图像名称。您可以在产品表上添加额外的类型位,当您保存或更新产品时,可以用TRUE或FALSE填充此列。使您更快地查询,因为它们都在同一读取中。

这是我过去对应用程序中的用户配置文件表所做的。希望这会有所帮助!

最新更新