将上传文件作为json保存在数据库中

问题描述 投票:0回答:1

我将一个文本文件上传到我的系统中。它由字节数组形式的文件内容组成。然后这个内容被解析并转换为具有许多关系的 C# 类对象。

我需要将此上传过程移至后台任务中。因此,上传后,UI 线程允许用户执行其他操作,同时在后台填充文件表。

后台任务位于单独的控制台库项目中

public class UploadFilesService : BackgroundService
。所以它无法访问上传的文件。我想我需要将它们存储在数据库表中,然后后台任务将获取它们并调用上传过程。

但是输入文件对于数据库表来说是大对象。我考虑有一列“ObjectAsJson”,其中对象加上内容字节数组转换为 json。

nvarchar
有字符限制。字节数组超出了该限制。多对多关系向这个 json 添加了很多字符,并且超出了这个限制。

在后台任务之前没有问题,因为一切在内存中都是临时的。现在我考虑以下解决方案:

使用 SQL Blob 数据类型 作为文件内容。
在 C# 类中再次解析并转换输入文件。这增加了口是心非,因为在上传过程中我已经解析并转换文件以验证字段。如果文件有效,那么理论上它会添加到队列中以供后台任务获取。

还有一个替代的 FileStream SQL 数据类型,但我认为 Blob 更好。

您将如何解决这个问题?为您的后台任务提供输入文件。

c# sql json sql-server background-task
1个回答
0
投票

EF 将属性字符串映射到 nvarchar(max)。根据其他人的回答,它可以保留10亿个字符。这足以将任何对象保留为 json,即使它有很多关系。

© www.soinside.com 2019 - 2024. All rights reserved.