|
Несколько дней назад я перенёс старый проект asp.net на Linux, основанный на asp.net 4.0 + Nhibernate + FluentNhibernate, и столкнулся с редкой проблемой в процессе миграции, прошёл множество статей, включая китайский, английский, и наконец нашёл ответ на японском сайте (через Google Translate), что можно назвать довольно болезненным, и я это записал Во-первых, среда, куда нужно перенести, — centos6.5 + MONO + Jexus Это происходило при Nhibernate + mono, но не всегда случалось, и некоторые проекты, куда я мигрировал, использовали Nhibernate, так что этой проблемы не возникало Начально: В миграции была обнаружена следующая ошибка Честно говоря, зайди на web.config, чтобы изменить конфигурацию После обнаружения модификации проблема всё ещё остаётся такой — немного тревожно, тщательно отслеживается, и обнаружила, что ошибка возникает при следующем запросе Nhibernate OpenSession, похоже, проблема кроется здесь
В это время я пробовал множество методов, включая переписывание методов вызова nhibernate, сканирование множества статей и так и не нашёл решения, пока наконец не нашёл объяснение из угла, причина ошибки была выброшена и объяснена, но перевод оказался слишком утомительным...
Причина возникшей ошибки заключалась в следующем:
NHibernate.AdoNet.SqlClientSqlCommandSet
С приведёнными выше тестами я не могу найти SqlCommandSet....
Похоже, это связано с платформой
Текущее решение
nhibernate:
расположение
<имя свойства="adonet.batch_size">0</property>
FluentNhibernate:
То есть, добавить. AdoNetBatchSize(0)
Пока проблема решена, и вышеописанное для протокола, я надеюсь помочь тем, кто сталкивается с такой же проблемой, избежать некоторых обходных путей!
|