作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个遗留系统,可以在需要时使用额外的列动态扩充表格。现在我想通过 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 包含列 Id、SaveDateTime、Description、A、 B、C 和 D 我想在 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/
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Combination of List> 我有多个列表,可以是 2 个或 3 个,最多 10 个列表,有多个
我是一名优秀的程序员,十分优秀!