属性 先映射的 Dapper 多映射集

Dapper multi mapping set which property is mapped first

我有 2 个 classes 实体和实例。实例 class 有一个实体对象和一个属性列表,如下所示:

public class Instance
{
    public Instance()
    {
        AttributeList = new ObservableCollection<AttributeClass>();
    }

    public int Id { get; set; }
    public string Name { get; set; }
    public string Attributes
    {
        get => _attributes;
        set
        {
            _attributes = value;
            JsonConvert.PopulateObject(Attributes, AttributeList);
        }
    }

    public Entity Entity
    {
        get => _entity ?? (_entity = new Entity());
        set
        {
            _entity = value;
            for (int i = _attributeList.Count - 1; i >= 0; i--)
            {
                _attributeList.RemoveAt(i);
            }
            foreach (Entity.AttributesDescribeClass attributeDescribe in _entity.Attributes)
            {
                _attributeList.Add(new AttributeClass() { AttributesDescribe = attributeDescribe });
            }
        }
    }

    public ObservableCollection<AttributeClass> AttributeList
    {
        get
        {
            return _attributeList;
        }
        set
        {
            _attributeList = value;
            _attributes=JsonConvert.SerializeObject(AttributeList);
        }
    }

    public class AttributeClass
    {
        [JsonIgnore]
        public Entity.AttributesDescribeClass AttributesDescribe { get; set; }
        public string Name
        {
            get => AttributesDescribe.Name;
        }
        public object Value { get; set; }
        [JsonIgnore]
        public ObservableCollection<InstanceValidator> Validators { get; set; }

        public AttributeClass()
        {
            Validators = new ObservableCollection<InstanceValidator>();
        }
    }
}

这个class唯一可以工作的是总是先设置实体,这样它就会创建属性列表,之后,我们设置属性并填充属性列表对象。但似乎 Attributes 总是在 Entity 之前设置,所以这个 class 不起作用。有什么方法可以指示 Dapper.NET 在属性之前设置实体?

Dapper 处理来自 reader、left-to-right 的列。所以:"whichever field comes back from the database first".