2

У меня возникли проблемы с доступом к sqllite db из нескольких потоков.Многопоточный доступ к SQLite с использованием C# и EntityFramework

SqlLite выходы «ошибка SQLite (5): База данных заблокирована» часто

Решение этой проблемы объясняется here в случае, если вы используете NHibernate, но я не знаю, как применить это решение на EntityFramework.

Любая помощь?

EDIT:

, в частности, как я «управлять сеансовыми областями для того, чтобы повторно использовать то же самое соединение между несколькими нитями»?

+0

Вы разделяете контекст между потоками? – tia

+0

Я пытался, но sqllite не очень хорошо себя ведет в этом случае. Документация говорит, что каждый поток должен использовать свой собственный экземпляр. – sam

ответ

0

Я закончил с использованием SQLCE 4,0 оказавшееся управлять многопоточность и одновременный доступ к совершенно

0

Если вы только с помощью EF, просто поставить все ваши доступ к данным вокруг своего рода «DB Lock»

// Prevent concurrent access to database, MyDatabase.Lock is a public static object that I use for locking all data access 
lock (MyDatabase.Lock) 
{ 
    using (var context = new DbEntities()) 
    { 
    } 
} 
+0

У меня есть потоки 100-х, я думаю, что это будет замедляться, не так ли? в любом случае, я дам ему попробовать – sam

+0

Почему вы используете столько потоков? – user743414