mdz*_*ieg 5 c# orm entity-framework
您知道如何将类的属性映射到表中的行吗?让我们有一个表 [ID, KEY, VALUE]。
我希望在类中具有预定义的键值(例如属性)映射属性,其值取自值列。
例子:
桌子
---------------------------------
| ID | Key | Value |
---------------------------------
| 1 | Name | Jon |
---------------------------------
| 2 | Surname | Doe |
---------------------------------
Run Code Online (Sandbox Code Playgroud)
班级
public class Bar
{
public string Name { get; set; }
public string Suname { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
EF 中有什么东西可以实现这一点,还是我必须编写自己的自定义代码?
BR
您无法将值从列映射到属性。这样你就有了键值表,那么我建议你将表内容读入字典。
首先,您应该拥有具有与表列名称相对应的属性的实体:
public class Foo
{
public string Key { get; set; }
public string Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
将此实体映射到表后,您可以将所有表内容读入字典中:
var values = context.Foos.ToDictionary(f => f.Key, f => f.Value);
Run Code Online (Sandbox Code Playgroud)
现在您可以轻松地通过键获取值:
var name = values["Name"];
Run Code Online (Sandbox Code Playgroud)
您甚至可以使用此字典作为您的属性的后备存储:
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"]; } }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
671 次 |
| 最近记录: |