考虑下面的课程。它尝试保护对_assignedTrays 的访问。
实际上,它工作得很好,因为 EF按照约定自动将支持字段链接_assignedTrays到属性( msdn )AssignedTrays
public class Rack
{
private List<Tray> _assignedTrays = new List<Tray>();
private Rack()
{
}
public Rack(string rackId)
{
this.Id = rackId;
}
public string Id { get; private set; }
public IReadOnlyList<Tray> AssignedTrays => this._assignedTrays.AsReadOnly();
public void Assign(params Tray[] trays)
{
this._assignedTrays.AddRange(trays);
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,我们的编码风格禁止在变量名中使用下划线;-)
根据其他代码示例(此处),应该可以仅重命名_assignedTrays为assignedTrays并明确通知 EF 有关该更改的信息OnModelCreating:
modelBuilder.Entity<Rack>(e =>
{
e.Property(t => t.AssignedTrays).HasField("assignedTrays");
});
Run Code Online (Sandbox Code Playgroud)
但这给了我以下例外:
System.InvalidOperationException: The property 'Rack.AssignedTrays' is …Run Code Online (Sandbox Code Playgroud)