修改
存储过程返回以下数据:
| Name | Value |
|---------|-----------|
| Member1 | someValue |
| Member2 | someValue |
我有一个类,其属性具有与数据库中“Name”字段匹配的自定义属性
class example{
[CustomMapping(DBName="Member1",...)]
public string MyName1{get; set;}
[CustomMapping(DBName="Member2",...)]
public int MyName2{get; set;}
}
我有以下方法从DB填充类:
public void LoadFromDataReader(IDataReader reader)
{
Type type = this.GetType();
PropertyInfo[] props = type.GetProperties();
foreach (PropertyInfo property in props)
{
CustomMappingAttribute mappingAttribute = (CustomMappingAttribute)Attribute.GetCustomAttribute(property, typeof(CustomMappingAttribute));
object val = null;
if (property.GetType() == typeof(string))
{
val = CustomObjectData.SafeRead<string>(mappingAttribute.DBName, reader, string.Empty);
}
else
{
val = CustomObjectData.SafeRead<int>(mappingAttribute.DBName, reader, int.MinValue);
}
property.SetValue(property, val);
}
}
我想从DB为每个属性分配相应的值。上面的代码不能准确地执行此操作,因为每次因为for循环而调用LoadFromDataReader()
时它将覆盖某些属性。
我该怎么做呢?
供参考: CustomObjectData.SafeRead从DB读取fieldName并将其分配给属性。
SafeRead<T>(string fieldName, IDataReader reader, T defaultValue);
旧问题:
我想创建一个从数据库中填充的类。将从数据库中读取类成员及其值。
存储过程返回以下数据:
| Name | Value |
|---------|-----------|
| Member1 | someValue |
| Member2 | someValue |
现在我希望我的类从存储过程中读取/加载以下结构:
class example{
public string Member1{get; set;}
public string Member2{get; set;}
}
将始终返回一行,并且存储过程可以返回任意数量的键/值对。
这可能吗?有没有更好的方法呢?
我想这样做因为我将这个类序列化为JSON。如果我的课程结构正确,这就变得微不足道了。
答案 0 :(得分:0)
我认为你可以做点什么
public class Example
{
public IEnumerable<string> Members { get; set; }
}
如果所有这些都是字符串,你可以使用这样的东西,如果没有,你可以使用T来使这个通用。
我希望这会有所帮助