Ich habe 2 Klassen Entity und Instanz. Die Instanzklasse hat ein Entity-Objekt und eine Liste von Attributen wie folgt:
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>();
}
}
}
Die einzige Klasse, die funktionieren kann, ist Entity wird immer zuerst gesetzt, so dass es die AttributeList erstellen wird, danach setzen wir Attributes und Populate AttributeList object. Aber es scheint, dass Attribute immer vor Entity gesetzt sind, so dass diese Klasse nicht funktionieren kann. Gibt es eine Möglichkeit, Dapper.NET anzugeben, um die Entität vor den Attributen zu setzen?
Dapper verarbeitet Spalten von einem Leser von links nach rechts. Also: "welches Feld kommt zuerst aus der Datenbank zurück".