gpt4 book ai didi

c# - 将未知数量的列映射到字典

转载 作者:行者123 更新时间:2023-11-30 12:37:35 24 4
gpt4 key购买 nike

我有一个遗留系统,可以在需要时使用额外的列动态扩充表格。现在我想通过 C#/NHibernate 访问所述表。
没有办法改变遗留系统的行为,我动态地需要处理附加列中的数据。因此动态组件映射不是一个选项,因为我不知道附加列的确切名称。

有没有办法将所有未映射的列放入字典中(列名作为键)?或者,如果这不是将所有列放入字典的选项?

同样,我在编译时不知道列的名称,所以这必须是完全动态的。

例子:

public class History
{
public Guid Id { get; set; }
public DateTime SaveDateTime { get; set; }
public string Description { get; set; }
public IDictionary<string, object> AdditionalProperties { get; set; }
}

因此,如果表 History 包含列 IdSaveDateTimeDescriptionA BCD 我想在 IDictionary 中包含“A”、“B”、“C”和“D”。或者,如果这太难做到,只需将所有列都放入其中即可。

对于初学者,如果有帮助的话,我也可以只使用字符串列。

最佳答案

您可能需要一个 ADO.NET 查询来获取这些数据。如果您使用 NH,即使是使用 SELECT * 的 SQL 查询,您也不会获得列名。

您可以尝试使用 SMO(SqlServer 管理对象,SqlServer 的 .NET 端口)或其他方式来查找表定义。然后使用 Fluent NHibernate 构建映射带有一个动态组件。我不确定在使用 session 工厂后是否可以更改映射。值得一试。祝你好运:-)

关于c# - 将未知数量的列映射到字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/672840/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com