如何从 ASP.NET Core 将列表存储在 SQL Server 中?

Posted

技术标签:

【中文标题】如何从 ASP.NET Core 将列表存储在 SQL Server 中?【英文标题】:How to store list in SQL Server from ASP.NET Core? 【发布时间】:2021-11-22 15:18:25 【问题描述】:

我的数据库中有这张表,我想存储传入的数据:

public string Id  get; set;  = default!;
public double? Name  get; set;  = default!;
public string? FamilyName  get; set;  = default!;
public List<Addresses> ClientAddress  get; set;  = default!;

这是我的Addresses 课程:

public string Id  get; set;  = default!;
public string Address  get; set;  = default!;

现在我想存储在数据库中 - 我应该如何处理列表?

public Task<bool> StoreModel(MainModel mainmodel) 

     var listtostore = new MainModelEnity()
                           
                               Name = mainmodel.Name,
                               FamilyName = mainmodel.FamilyName,
                               ClientAddress = //how should I store here? 
                           

【问题讨论】:

如果您能提及您尝试使用的数据库类型,那就太好了 @OneCricketeer SQLSERVER 如果你想存储列表,那你为什么要使用关系数据库呢? “正确”模式是将store(address_id=1), store(address_id=2) 的各个行存储在某个store 表中,然后address 表中有id=1, id=2 的行,然后您加入这些行以获取具有地址信息的商店 @OneCricketeer 对不起,但我没有得到你,从 UI 获取一个人的多个地址的模型,我使用关系数据库,你说我不应该使用 List,但我应该怎么做那么?我怎样才能在数据库中获取这些地址存储?考虑到我更新的问题,你能举个例子吗?我真的很感谢你的帮助 我是说你应该使用外键查找和 SQL 连接来获取完整的数据集。你的应用程序有一个 UI 组件并不重要。存储表应该只保存存储数据。每家商店都有一个地址,以及一个订购商品的客户列表(例如)。每个客户都有一个帐单/送货地址。这些应该都是不同的表(商店、客户、订单、地址,也许还有其他) 【参考方案1】:

我假设您的意思是问如何将列表存储在关系数据库中?因为如果它是一个文件存储或 NoSql 数据库,那么它是相当容易的。

但简短的回答是,你没有。这不是关系数据库的本意。看到这个Post。

话虽如此,还是有办法解决的。

    将列表存储为字符串:

     var listString = JsonConvert.Serialize(MyList);
    

    然后你就可以轻松地把那个字符串存入数据库了

    将列表保存为服务器上的文件,然后将文件的位置存储在数据库中。

【讨论】:

谢谢,但我为他们创建了一个表,你可以看到地址类是主类中的外键,所以,我还需要做 jsonconvert 吗?老实说,我不知道我的方法是正确的 如果我不想创建第二个表,我需要做 public List ClientAddress ,当我想创建一个数据库时,它会抛出一个错误,我无法根据列表实体创建表跨度> 我认为 OP 不想存储 JSON 或文字列表。 documentation of EntityFramework shows using Lists to define relationships

以上是关于如何从 ASP.NET Core 将列表存储在 SQL Server 中?的主要内容,如果未能解决你的问题,请参考以下文章