0

为什么我们需要 EF Core 中的支持字段?

为什么有人在处理实体时要使用字段而不是属性?我想不出这样的情况。这可能意味着我不理解或者我遗漏了有关这些字段的某些内容,因为我认为我可以完成任何可以对具有属性的字段进行的操作。

我正在通过这里的教程学习 EF Core 。

4

1 回答 1

2

属性不存储任何东西。它们是一对 set 和 get 方法。您必须有一个支持字段才能让他们存储一些东西。

public class Data
{
    private int _id; // Backing field used by property to store the value.

    // Property whose name is used by EF Core to map to a column name.
    public int Id
    {
        get { return _id; }
        set { _id = value; }
    }

    ... more properties
}

但是您可以通过使用自动属性来简化此代码

public class Data
{
    // Auto-implemented property. Backing field and implementation are hidden.
    public int Id { get; set; }

    ... more properties
}

第二个代码片段与第一个代码片段完全相同。


如果可以从属性名称推断出它们的名称,则 EF Core 更喜欢支持字段而不是属性。公约说:

按照惯例,将发现以下字段作为给定属性的支持字段(按优先顺序列出)。仅发现模型中包含的属性的字段。有关模型中包含哪些属性的更多信息,请参阅包含和排除属性

  • _<驼峰式属性名称>
  • _<属性名称>
  • m_<驼峰式属性名称>
  • m_<属性名称>
于 2019-11-29T20:33:31.150 回答