我有一个带产品的表。该列之一是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,但从理论上讲,您有几个选择。
-
使用Imagestorage.productimages中的图像名称并将其作为一部分发送数据库查询中的过滤器。[从产品中选择 *product_no in(imgid1,imgid2 ..)]
-
从数据库中获取产品,然后加入 Imagestorage.productimages仅获取图像的产品。
Imagestorage是将实现从您的目录列出产品图像的功能的类。
将图像存储在目录中的最佳方法是将整个URL保存到表中。
因为在您的情况下,您使用的是产品ID a图像名称。您可以在产品表上添加额外的类型位,当您保存或更新产品时,可以用TRUE或FALSE填充此列。使您更快地查询,因为它们都在同一读取中。
这是我过去对应用程序中的用户配置文件表所做的。希望这会有所帮助!