Dapper multi mapping set首先映射哪个属性

时间:2018-03-29 02:37:05

标签: c# dapper

我有2个类实体和实例。 Instance类有一个Entity对象和一个Attributes列表,如下所示:

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>();
        }
    }
}

这个类唯一可以工作的是Entity总是先设置,所以它会创建AttributeList,之后我们设置Attributes和Populate AttributeList对象。但似乎属性总是在实体之前设置,所以这个类不能工作。有没有办法表明Dapper.NET在属性之前设置实体?

1 个答案:

答案 0 :(得分:1)

Dapper从左到右处理阅读器中的列。所以:&#34;无论哪个字段首先从数据库返回&#34;。