Я видел много ссылок, утверждающих, что Адаптеры таблиц слабы и глупы, и что любой настоящий разработчик будет использовать Адаптеры данных. Я не знаю, правда это или нет, но я исследую этот вопрос и подчеркиваю, насколько плохо пахнет весь этот «DataAdapter / TableAdapter против Typed DataSets».
Позвольте мне попытаться объяснить ...
Предположим, у меня есть определение Typed DataSet в файле xsd, и теперь я готов создать DataAdapter в коде для этой схемы ... (Кстати, я использую OleDb для доступа к автономному .dbf). файлы в папке ... Нет хранимых процедур SQL-сервера, которые можно вызвать здесь, просто старые таблицы, готовые к действию.)
Из моих исследований я вижу, как DataAdapter используется в сочетании с Typed DataSet. Скажи мне, если я ошибаюсь. (Тогда у меня есть большая жалоба / вопрос в конце.)
public DataTable GetJobsByCustomer(string CustNo)
{
OleDbConnection conn1 = new OleDbConnection(dbConnectionString);
conn1.Open();
LMVFP ds1 = new LMVFP(); //My Typed DataSet
string sqlstring = @"SELECT act_compda, contact, cust_num, est_cost, invoiced, job_hours,
job_invnum, job_num, job_remark, job_start, mach_cost, mat_cost, mat_mkup,
p_o_num, priority, quote_no, quoted_by, ship_date, ship_info, shop_notes, status, total_cost
FROM job_info
WHERE (cust_num = ?) AND (status = 'A')
ORDER BY priority";
OleDbDataAdapter JobsAdapter = new OleDbDataAdapter(sqlstring,conn1);
JobsAdapter.SelectCommand.Parameters.Add("?", OleDbType.VarChar,6).Value=CustNo;
JobsAdapter.Fill(ds1, "Jobs"); // A table schema in the Typed DataSet
return ds1.Jobs;
}
Это так? Это работает, так что это хорошо. И действительно, строго типизированное поведение великолепно.
Теперь, моя хватка .... Вы хотите сказать, что я должен поддерживать тот же синтаксис exaxt SQL в моем методе DAL (GetJobsByCustomer), чтобы он соответствовал схеме таблицы в xsd? Это безумие, когда приходится так много поддерживать и разъединять мой код SQL и схему xsd, написанную вручную. Там нет ошибки катинга на всех, так как вы пишете текстовую строку! Вы узнаете во время выполнения, сработает ли это.
Когда вы набираете весь SQL-код в коде, ужасно смотреть назад и вперед, чтобы синхронизировать ваш кодированный SQL-код со схемой таблицы xsd.
Конечно, я что-то упускаю.
Что за фарс. Типизированный набор данных работает с красивым intellisense и всем, потому что он сгенерирован из схемы, но когда дело доходит до него, просто можно написать SQL, который соответствует типизированной схеме. Все, что они сделали, это перенесли головную боль в новую область.
Пожалуйста, скажите мне, что я пропускаю кое-что здесь, что сделает это намного лучше.