gpt4 book ai didi

c# - EF : mapping class properties to Rows not Columns

转载 作者:太空宇宙 更新时间:2023-11-03 13:35:02 26 4
gpt4 key购买 nike

您知道如何将类的属性映射到表中的行吗?让我们有一个表 [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

最佳答案

您不能将值从列映射到属性。这样你就有了key-value表,那我建议你把表内容读入字典。

首先,您应该拥有具有与表列名称对应的属性的实体:

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"]; } }
}

关于c# - EF : mapping class properties to Rows not Columns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18987852/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com