代码之家  ›  专栏  ›  技术社区  ›  Red Wei

Dapper多重映射集首先映射哪个属性

  •  0
  • Red Wei  · 技术社区  · 6 年前

    我有两个类实体和实例。实例类有一个实体对象和如下属性列表:

    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,然后,我们设置属性并填充AttributeList对象。但属性似乎总是设置在实体之前,所以这个类不能工作。任何表示整洁的方式。NET在属性之前设置实体?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Marc Gravell    6 年前

    Dapper从左到右处理读卡器中的列。所以:“先从数据库返回哪个字段”。