(BLToolkit + dBASE III) Работа с таблицами. Подключение.
От: EqKeeper  
Дата: 21.01.11 16:01
Оценка:
VS2010, Windows Forms, BLToolkit (last snapshot), dBASE III
Доброго времени суток!

Совсем недавно стал осваивать BLToolkit. Библиотека очень понравилась и основы работы с ней быстро усвоились. Собрал проект, работающий с базой MySQL — все здорово. Но теперь столкнулся с проблемой...

Итак, имеем директорию, внутри которой находятся несколько каталогов. Внутри них — DBF-таблицы формата dBASE III.
Раньше я работал с ними посредством OleDbConnection и никаких проблем не возникало. Теперь же, привыкнув к хорошему, решил пересобрать проект с использованием BLToolkit.

В файле app.config добавил следующие строки:
<appSettings>
    <add key="ConnectionString.OleDb.Dir1" value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\Temp\Dir1;Extended Properties=dBASE III;User ID=Admin;Password="/>
</appSettings>


Хотя изначально пробовал вот так:
DbManager.AddConnectionString("OleDb.Dir1", String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0}\\Dir1;Extended Properties=dBASE III", rootDir));


DataContext объявляется вот так:
public DataContext() : base("OleDb", "Dir1") { }


В коде софтины пишу:
DataContext db = new DataContext();
List<DBFUser> usersList = db.UsersAccessor.GetUsersList();


Получаю NonSupportedExeption вот на это:
public abstract class UsersAccessor : DataAccessor<DBFUser>
{
    public List<DBFUser> GetUsersList()
    {
        return new SqlQuery<DBFUser>().SelectAll();
    }
}


Попытка посмотреть дебагером имеющиеся объекты ни к чему не привела — везде лишь "выдал исключение".
При этом соединение как таковое якобы открывается:
using (DbManager db = new DbManager("OleDb", "Dir1"))
{
  Assert.AreEqual(ConnectionState.Open, db.Connection.State);
// Вот до сюда оно доходит и идет дальше. Говорит, что соединение открыто (хоть и не верится)
}


Что особенно печально, даже при открытом соединении в db.Connection.Database — пустая строка.

Если есть какие-нибудь идеи — подайте пожалуйста. Базы живые. Обычным OleDbConnection с ними можно связаться и работать.

В данный момент пытаюсь откомпилировать сырцы BLToolkit (пока компилироваться отказываются), чтобы получить более связную информацию из дебагера. Но, если кто-нибудь сможет объяснить в чем я не прав и помочь советом — буду премного благодарен.

Спасибо!

24.01.11 05:35: Перенесено из '.NET'
bltoolkit dbase iii
Re: (BLToolkit + dBASE III) Работа с таблицами. Подключение.
От: EqKeeper  
Дата: 22.01.11 12:40
Оценка:
Откомпилировал, отдебажил, проблему нашел:
public class OleDbDataProvider : DataProviderBase
{
    public override ISqlProvider CreateSqlProvider()
    {
        throw new NotSupportedException();
    }
}

Остался лишь вопрос — а что делать?
Re[2]: (BLToolkit + dBASE III) Работа с таблицами. Подключен
От: IT Россия linq2db.com
Дата: 24.01.11 06:33
Оценка:
Здравствуйте, EqKeeper, Вы писали:

EK>Откомпилировал, отдебажил, проблему нашел:

EK>
public class OleDbDataProvider : DataProviderBase
EK>{
EK>    public override ISqlProvider CreateSqlProvider()
EK>    {
EK>        throw new NotSupportedException();
EK>    }
EK>}

EK>Остался лишь вопрос — а что делать?

Создать свой провайдер на базе OleDbDataProvider. Создать свой Sql провайдер на базе BasicSqlProvider. В data провайдере перекрыть приведённый выше метод и вернуть из него Sql провайдер.

Опционально. Допилить свой Sql провайдер по аналогии с другими Sql провайдерами, чтобы он умел генерировать SQL по Linq запросам для DBF. Наслаждаться поддержкой Linq для DBF
Если нам не помогут, то мы тоже никого не пощадим.
Re[3]: (BLToolkit + dBASE III) Работа с таблицами. Подключен
От: EqKeeper  
Дата: 24.01.11 16:38
Оценка:
Здравствуйте, IT, Вы писали:

IT>Создать свой провайдер на базе OleDbDataProvider. Создать свой Sql провайдер на базе BasicSqlProvider. В data провайдере перекрыть приведённый выше метод и вернуть из него Sql провайдер.


IT>Опционально. Допилить свой Sql провайдер по аналогии с другими Sql провайдерами, чтобы он умел генерировать SQL по Linq запросам для DBF. Наслаждаться поддержкой Linq для DBF


Звучит жутко! о.о
Но я попробую. Спасибо!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.