【发布时间】:2021-04-23 19:31:10
【问题描述】:
我正在使用上下文类进行需要插入记录的项目。但是,在插入之前,“DataArea”属性之一被设置为它不应该具有的值。
我开始调试代码以查看该值的确切设置位置,并将 getter 和 setter (get; set;) 的简短书面版本更改为:
public DataAreaEnum _DataArea;
public DataAreaEnum DataArea
{
get
{
return _DataArea;
}
set
{
_DataArea = value;
Debugger.Break();
}
}
通过这样做,我希望调试器在设置值时会中断,但是这永远不会发生。我被困住了,不知道该怎么想。有没有其他方法可以设置这个值?如果设置器中的断点从未被命中,我如何才能找到该值的设置位置?
完整的类代码:
using Works.Common.Models;
using System.Collections.Generic;
using System.Diagnostics;
namespace Works.Models.Toolsheets
{
public partial class Toolblad : ModelBase
{
public Toolblad()
{
Bijlagen = new HashSet<Bijlage>();
//Carrousels = new HashSet<Carrousel>();
KlauwplaatSlijpers = new HashSet<KlauwplaatSlijper>();
Klauwplaten = new HashSet<Klauwplaat>();
Laadtafels = new HashSet<Laadtafel>();
Laders = new HashSet<Lader>();
MblStangenLaders = new HashSet<MblStangenLader>();
MblStangenLaderWisselpunten = new HashSet<MblStangenLaderWisselpunt>();
Shuttles = new HashSet<Shuttle>();
Spankoppen = new HashSet<Spankop>();
SpankopSlijpers = new HashSet<SpankopSlijper>();
Revolvers = new HashSet<ToolbladRevolver>();
}
public DataAreaEnum _DataArea;
public DataAreaEnum DataArea
{
get
{
return _DataArea;
}
set
{
_DataArea = value;
Debugger.Break();
}
}
public bool IsTemplate { get; set; }
#region Navigation Properties
public virtual AlgemeneInfo AlgemeneInfo { get; set; }
public int AlgemeneInfoId { get; set; }
public ICollection<Bijlage> Bijlagen { get; set; }
//public ICollection<Carrousel> Carrousels { get; set; }
public ICollection<KlauwplaatSlijper> KlauwplaatSlijpers { get; set; }
public ICollection<Klauwplaat> Klauwplaten { get; set; }
public ICollection<Laadtafel> Laadtafels { get; set; }
public ICollection<Lader> Laders { get; set; }
public MachineGroep MachineGroep { get; set; }
public int MachineGroepId { get; set; }
public ICollection<MblStangenLader> MblStangenLaders { get; set; }
public ICollection<MblStangenLaderWisselpunt> MblStangenLaderWisselpunten { get; set; }
public ICollection<ToolbladRevolver> Revolvers { get; set; }
public ICollection<Shuttle> Shuttles { get; set; }
public ICollection<Spankop> Spankoppen { get; set; }
public ICollection<SpankopSlijper> SpankopSlijpers { get; set; }
#endregion Navigation Properties
}
}
【问题讨论】:
-
public DataAreaEnum _DataArea;那应该是私有的。 -
将此设置为私有后,问题仍然存在。该值似乎仍在设置中。
-
我注意到 Toolblad 是一个部分类。其他地方是否有任何代码更改
_DataArea?尝试在该代码文件中将其重命名为其他名称(例如_dataArea),看看它是否仍然可以编译。 -
设置的值是多少?如果是枚举,则默认为 0。See here for details
-
我猜你正在使用
EFCore(为什么不标记它?),所以看起来属性访问模式是Field,所以属性的getter和setter被完全绕过了。尝试为整个类型Toolblad(如modelBuilder.Entity<Toolblad>().UsePropertyAccessMode(PropertyAccessMode.Property))或您选择的每个特定属性进行配置。
标签: c# asp.net-core entity-framework-core