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

How can I store multiple images in a database with a Blazor application?

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

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

我现在想知道我能在这里做什么。有没有一种我缺少的更简单的方法?我做错了什么?

I tried changing the string Image {get;set;} to a List {get;set;} where the database would just store a list of the URLs where I could iterate through them in the application. This obviously did not work, as through some research, I learned that databases cannot store lists.

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

  1. 在图像 url 之间添加分隔符。使用 string Image {get;set;} 存储图片 url,值如下:“image1url,image2url,etc”(使用 , 作为分隔符)。你可以考虑使用String.Join Method.

  2. 新建Imagetable存放Image信息(包含ID,Name,Urls),然后配置Maintable和Maintable一对多关系图像模型。在 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