为什么我们需要 EF Core 中的支持字段?
为什么有人在处理实体时要使用字段而不是属性?我想不出这样的情况。这可能意味着我不理解或者我遗漏了有关这些字段的某些内容,因为我认为我可以完成任何可以对具有属性的字段进行的操作。
我正在通过这里的教程学习 EF Core 。
为什么我们需要 EF Core 中的支持字段?
为什么有人在处理实体时要使用字段而不是属性?我想不出这样的情况。这可能意味着我不理解或者我遗漏了有关这些字段的某些内容,因为我认为我可以完成任何可以对具有属性的字段进行的操作。
我正在通过这里的教程学习 EF Core 。
属性不存储任何东西。它们是一对 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_<属性名称>