Строка кода, которая вызывает:
(int)Db.SetCommand(sql.Inject(new { db = Current.MetaDb.Name })).ExecuteScalar();
Show Detailed Compiler Output:
/var/www/corpgen/trunk/App_Code/Base.cs(67,24): error CS0584: Internal compiler error: Object reference not set to an instance of an object
/var/www/corpgen/trunk/App_Code/Base.cs(67,81): error CS1061: Type `object' does not contain a definition for `ExecuteScalar' and no extension method `ExecuteScalar' of type `object' could be found (are you missing a using directive or an assembly reference?)
/usr/lib/mono/4.0/mscorlib.dll (Location of the symbol related to previous error)
/var/www/corpgen/trunk/App_Code/Data/PostgreSQLDataProvider.cs(81,32): error CS0584: Internal compiler error: Object reference not set to an instance of an object
/var/www/corpgen/trunk/App_Code/Data/PostgreSQLDataProvider.cs(81,25): error CS0266: Cannot implicitly convert type `object' to `BLToolkit.Data.Sql.SqlProvider.ISqlProvider'. An explicit conversion exists (are you missing a cast?)
Здравствуйте, Игорь Евгеньевич, Вы писали:
ИЕ>>/var/www/corpgen/trunk/App_Code/Base.cs(67,24): error CS0584: Internal compiler error: Object reference not set to an instance of an object
ИЕ>Проблема в компиляторе, если использовать PreCompiled из Windows всё работает.
Боюсь не только, у меня bltoolkit валит mono, в многопоточном приложении.
Здравствуйте, -Dm-, Вы писали:
ИЕ>>Проблема в компиляторе, если использовать PreCompiled из Windows всё работает. D>Боюсь не только, у меня bltoolkit валит mono, в многопоточном приложении.
При нагрузке на приложении, mono валится. Конечно есть вероятность того что код приведенный выше не причем. Однако если его закоментировать все нормально. Пробовал на mono 2.10.2 и 2.11 из git. Под windows все работает. В данной момент пытаюсь локализовать проблему.
Здравствуйте, -Dm-, Вы писали:
D>>При нагрузке на приложении, mono валится. D>Видимо проблема в сборщике мусора sgen, если работать с boehm, то не валится.
Связь сборщика мусора с bltoolkit может быть только через DbManager. Нужно проверить везде ли он диспозится.
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, IT, Вы писали:
IT>Связь сборщика мусора с bltoolkit может быть только через DbManager. Нужно проверить везде ли он диспозится.
Не факт, может в mono, linq кривой или еще что, а GC только 'катализатор' проблемы.
Вот так использую DbManager
public static DbManager GetDB()
{
BLToolkit.Data.DataProvider.PostgreSQLDataProvider.QuoteIdentifiers = true;
var _provider = new BLToolkit.Data.DataProvider.PostgreSQLDataProvider();
_connectionString = ConfigurationManager.ConnectionStrings["Base"].ToString();
return new DbManager(_provider, _connectionString);
}
using (var db = CData.GetDB())
{
....
db.Close();
}