如何使用 Blazor 应用程序在数据库中存储多个图像?

问题描述

我有一个用户显示表单的应用程序。该表单由服务器获取并存储在数据库中,在该数据库中可以在应用程序的另一个页面上读取信息。表单的一部分采用图像,其中图像被转换为​​ Base64 字符串并发送到 Azure 进行存储,图像的 URL 作为字符串存储在数据库中。这一切正常。我的麻烦来自尝试实现用户可以选择多个图像的功能

我尝试将 string Image {get;set;} 更改为 List<string> {get;set;},其中数据库将仅存储 URL 列表,我可以在应用程序中遍历它们。这显然不起作用,因为通过一些研究,我了解到数据库不能存储列表。

我现在想知道我可以在这里做什么。有没有更简单的方法来做到这一点,我想念?我做错了什么?

解决方法

我尝试将字符串 Image {get;set;} 更改为 List {get;set;} 数据库将只存储 URL 列表 我可以在应用程序中遍历它们。这显然 没有用,因为通过一些研究,我了解到数据库 无法存储列表。

您可以尝试使用以下方法:

  1. 在图片网址之间添加分隔符。使用 string Image {get;set;} 来存储图片 url,值是这样的:"image1url,image2url,etc"(使用 , 作为分隔符)。您可以考虑使用 String.Join Method

  2. 新建一个Image表来存储Image信息(包含ID、Name、Urls),然后配置Main表和Image模型的一对多关系。在 Main 模型中,使用导航属性添加图像。代码如下:

     public class Main
     {
         public int Id { get; set; }
         public string Name { get; set; }
         public List<Image> Images { get; set; }
     }
     public class Image
     {
         public int Id { get; set; }
         public string Name { get; set; }
         public string Url { get; set; }
     }
    

    有关实体关系的更多详细信息,请参阅:

    Relationships

    Configuring One To Many Relationships in Entity Framework Core

    Saving Related Data