Re[2]: Баг в SqlQuery<T>
От: Wight Россия http://zyan.com.de
Дата: 29.04.09 10:19
Оценка:
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>а вообще, конечно, все это крайне непрозрачно


Ага. Но зато ж как удобно
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.