Соединение MySQL 6 с данными Enterprise Library 5
Создаю простое веб-приложение asp.net только для того, чтобы проверить его (очевидно, будет произведен рефакторинг, прежде чем что-либо будет создано для рабочего сайта), и я пытаюсь подключиться к базе данных mysql с использованием последней версии Enterprise Library, и я работаю в ошибку: "Тип MySqlClientFactory не содержит ConfigurationElementTypeAttribute."
Я прошел через несколько различных попыток настроить конфигурацию и, основываясь на всем, что я нашел, перевел это к следующему: в моем web.config я получил это:
<configSections>
<section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" />
</configSections>
<dataConfiguration defaultDatabase="MyDB">
<providerMappings>
<add name="MySql.Data.MySqlClient" databaseType="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data,Version=6.3.6,Culture=neutral,PublicKeyToken=c5687fc88969c44d"/>
</providerMappings>
</dataConfiguration>
<connectionStrings>
<add name="MyDB" connectionString="Server=localhost;Database=MyDB;Uid=root;Pwd=****;"
providerName="MySql.Data.MySqlClient"/>
</connectionStrings>
и на моей странице default.aspx я получил это:
protected void Page_Load(object sender, EventArgs e)
{
string sql = "select * from users";
Database db = EnterpriseLibraryContainer.Current.GetInstance<Database>("MyDB");
var reader = db.ExecuteReader(CommandType.Text, sql);
while (reader.NextResult())
{
Response.Write(reader["userName"] + "<br />");
}
}
Итак, очень просто... но опять же, я получаю ошибку: "Тип MySqlClientFactory не содержит ConfigurationElementTypeAttribute."
и я не могу найти никакой ссылки на это... MSDN не говорит много об этом атрибуте, и то, что он говорит, я не могу сказать, что я не имею отношения к тому, что я делаю... любая помощь будет оценена,
Спасибо!
1 ответ
EntLib не поддерживает MySql из коробки. EntLibContrib имеет правильный поставщик данных MySql. Однако выпущенный релиз нацелен на EntLib4.1. Я вижу, что работа по портированию на v5.0 идет полным ходом, но блок доступа к данным пока еще не завершен. Возможно, вам придется портировать себя.
Используемая вами фабрика не поддерживает EntLib. Вы можете найти хорошее описание ConfigurationElementTypeAttribute, а также другие рекомендации по расширению EntLib в практических занятиях по расширению библиотеки предприятия.