Ich verwende Dapper Erweiterungen und habe eine Frage über die class mapper. Leider typischerweise die meisten meiner Tabellen müssen einige Mapping ihnen angetan wie verschiedene Schemata usw.Hinzufügen mehrerer Karten bei Verwendung von Dapper Erweiterungen
Also ich finde ich bin die DefaultMapper nach unten eine Menge Auslagern tun:
public Hierarchies HierarchyGetByName(string aName)
{
Hierarchies result;
using (SqlConnection cn = GetSqlConnection())
{
cn.Open();
Type currModelMapper = DapperExtensions.DapperExtensions.DefaultMapper;
try
{
DapperExtensions.DapperExtensions.DefaultMapper = typeof(HierarchiesMapper);
IFieldPredicate predicate = Predicates.Field<Hierarchies>(f => f.Name, Operator.Eq, aName);
result = cn.GetList<Hierarchies>(predicate).FirstOrDefault();
}
finally
{
DapperExtensions.DapperExtensions.DefaultMapper = currModelMapper;
}
cn.Close();
}
return result;
}
Wenn ich 2 zugreifen Tabellen dann muss ich das zum Beispiel zweimal machen.
Gibt es eine Möglichkeit, alle Mapper-Klassen gleichzeitig hinzuzufügen, um eine Sammlung zu sagen, und je nachdem, auf welche Tabelle zugegriffen wird, wird die richtige ausgewählt?
so sind alle meine AutoClassMapper Klassen gefunden werden, solange sie sind alle d in der gleichen Versammlung elcared? Die gleiche Baugruppe wie was? –
TheEdge
Dieselbe Assembly, in der Sie Ihre cn.GetList-Methoden aufrufen. Wenn Sie nur ein Projekt/eine Baugruppe haben, ist das kein Problem. Ich habe es erwähnt, falls Sie mehrere Projekte in Ihrer Lösung haben. –
Sie müssen Ihre Karten nicht in der aufrufenden Assembly haben. Sie können verwenden: DapperExtensions.SetMappingAssemblies (new [] {typeof (MyCustomClassMapper) .Assembly}); –