您是否知道如何将类的属性映射到表中的行? 我们有一个表[ID,KEY,VALUE]。
我希望在类中使用预定义的键值(例如在属性上)映射属性,并从值列中获取值。
实施例
表格
---------------------------------
| ID | Key | Value |
---------------------------------
| 1 | Name | Jon |
---------------------------------
| 2 | Surname | Doe |
---------------------------------
类
public class Bar
{
public string Name { get; set; }
public string Suname { get; set; }
}
EF中有什么可以实现这一点,还是我必须编写自己的自定义代码?
BR
答案 0 :(得分:1)
您无法将列中的值映射到属性。因此你有键值表,然后我建议你把表内容读入字典。
首先,您应该拥有具有与表列名称对应的属性的实体:
public class Foo
{
public string Key { get; set; }
public string Value { get; set; }
}
将此实体映射到表后,您可以将所有表内容读入字典:
var values = context.Foos.ToDictionary(f => f.Key, f => f.Value);
现在您可以通过键轻松获取值:
var name = values["Name"];
您甚至可以将此词典用作属性的后备存储:
public void Bar
{
private Dictionary<string, string> values =
context.Foos.ToDictionary(f => f.Key, f => f.Value);
public string Name { get { return values["Name"]; } }
public string Surname { get { return values["Surname"]; } }
}
答案 1 :(得分:0)
这不是数据库的工作方式。每行都是一个单独的实体。每列是实体的单独属性。如果您将数据库用作键/值对,则不要使用关系数据库。看看像Riak或MongeDB这样的NoSQL选项。如果这只是一个配置对象,则另一个选项是使用xml或配置文件。
现在,我不明白你的例子中如何将姓名和姓氏联系在一起。我不相信它是可能的。