2009-11-24 3 views
0

Я создаю быстрый и грязный прототип (C#) объектно-реляционного инструмента отображения. Я хотел бы поддержать как минимум два типа баз данных - один будет Microsoft SQL Server 2005/2008, а другой, скорее всего, MySQL.Что использовать для гибкого уровня доступа к данным - OLEDB или ...?

Есть ли способ использовать единый механизм доступа к базе данных для обоих двигателей баз данных и что это будет?

Конечно, я знаю, что будут различия в синтаксисе SQL-запросов, но в моем случае это не так важно - я буду использовать инструмент для генерации SQL-запросов, которые соответствуют определенному движку db, и пользователь сможет для оптимизации этих SQL-запросов.

Основная идея заключается в том, чтобы как можно более гибкое решение поставщика данных. Можно ли это сделать или нет, и как это можно сделать проще? Обратите внимание, что я не использую это для производственной системы, просто для прототипа, но все же мне любопытно, как это достигается в производственных инструментах OR/M - они используют полностью отдельный механизм доступа для каждого поставщика данных или что-то есть общего? И используют ли они DataReaders или есть более подходящий способ получения данных, если я намерен преобразовать данные в бизнес-объекты?

Спасибо за любые идеи, ссылки и т.д.

ответ

1

Хорошо, я нашел: http://www.15seconds.com/issue/040127.htm

Решение состоит в том, чтобы использовать IDbxxx или Dbxxx, как описано в msdn.microsoft.com/en-us/library/ms379620(VS.80) .aspx

Теперь я могу указать только один раз, какой тип DataProvider я использую, а затем просто использовать Db/IDb везде.

1

Я рекомендую NHibernate - который делает то, что вы хотите, я думаю.

nhibernate.info

+0

Спасибо, я знаком с nHibernate, но на этот раз я сам пытаюсь создать прототип, который делает что-то похожее на nHibernate. Я мог бы изучить исходный код некоторого инструмента nHibernate, но я подумал, что кто-то из них даст быстрый ответ, как это можно было бы сделать проще, учитывая, что nHibernate - полномасштабный производственный инструмент, но мне нужно решение для простого прототипа. , – JustAMartin

Смежные вопросы