ili>вообще, то все еще веселее. SqlQueryInfo — кешируются, по вот такому забавному ключу:
ili>ili>string key = type.FullName + "$" + actionName + "$" + db.DataProvider.UniqueName + "$" + GetTableName(type);
ili>
Насколько я понимаю, это позволяет кешировать запросы, когда тип имеет несколько маппингов на разные таблицы.
Хотя тут было бы правильнее не имя таблицы подставлять, а какой-нибудь хеш используемого маппинга
ili>а MappingSchema — тоже очень хитрая, если она не задана явно, то берется из DbManager, а если и он не задан, то Map.DefaultSchema
Все правильно, нельзя сразу брать db.MappingSchema, надо сначала попробовать локальную схему.
А SqlQueryBase сразу лезет в DbManager. В данном случае:
protected SqlQueryInfo Create...SqlText(DbManager db, Type type)
{
// было: ObjectMapper om = db.MappingSchema.GetObjectMapper(type);
ObjectMapper om = MappingSchema.GetObjectMapper(type);
...
ili>а вообще, конечно, все это крайне непрозрачно
Ага. Но зато ж как удобно