gpt4 book ai didi

c# - Linq 数据映射 : usage of Storage property on column attribute

转载 作者:行者123 更新时间:2023-11-30 12:15:57 25 4
gpt4 key购买 nike

有人可以解释一下使用 ColumnAttribute 的以下 3 种可能性之间的区别吗:

A:字段上的属性

[Column(Name="ParentId")]
private int m_parentid;
public int ParentId { get { return m_parentid; } set { m_parentid = value; } }

B: 属性上的属性

private int m_parentid;
[Column(Name="ParentId")]
public int ParentId { get { return m_parentid; } set { m_parentid = value; } }

C: 具有存储集的属性的属性

private int m_parentid;
[Column(Name="ParentId", Storage="m_parentid")]
public int ParentId { get { return m_parentid; } set { m_parentid = value; } }

我可以理解,在非平凡的 getter/setter 的情况下,B 将不同于 A 和 C(Linq 可能会在 B 的情况下使用 getter/setter,但在 A 或 C 的情况下则不会,这是正确的吗?)

但我不明白 A 和 C 之间怎么会有任何区别。

最佳答案

C 有助于引擎理解表达式树,例如谓词:

var items = ctx.SomeTable.Where(x => x.ParentId == 21);

对于“a”,我希望它会失败,因为它并不真正了解属性 ParentId(只有字段 m_parentid 和数据库列)。在“c”中指定“存储”允许将 db 值直接保存到字段而不是使用属性,从而避免在从 db 实现期间不需要的代码。

关于c# - Linq 数据映射 : usage of Storage property on column attribute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6235137/

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