微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 将未知数量的列映射到Dictionary

我有一个遗留系统,可以在需要时动态扩充带有其他列的表.现在我想通过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包含Columns Id,SaveDateTime,Description,A,B,C和D,我想在IDictionary中包含“A”,“B”,“C”和“D”.或者,如果这太难了,只需将所有列放在那里.

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

解决方法

您可能需要一个ADO.NET查询获取此数据.如果使用NH,即使使用SELECT *进行SQL查询,也不会获得列名.

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐