Я видел много ссылок на то, что TableAdapters слабы и глупы, и что любой настоящий dev будет использовать DataAdapters. Я не знаю, правда ли это или нет, но я изучаю этот вопрос и подчеркиваю, как плохо пахнет весь этот «DataAdapter/TableAdapter против типизированных наборов данных».DataAdapters от типизированных DataSets = кошмары схемы SQL
Позвольте мне объяснить ...
Пусть у меня типизированного DataSet оп ределяется в файле XSD, и теперь я готов создать DataAdapter в коде, против этой схемы ... (К Кстати, я использую OleDb для доступа к автономным файлам .dbf в папке ... Нет хранимых процедур SQL Server для вызова здесь, просто старые старые таблицы, готовые к действию.)
Из моих исследований, вот как я вижу 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, который соответствует типизированной схеме. Все, что они сделали, это переместить головную боль в новую область.
Пожалуйста, скажите мне, что у меня отсутствует sometehing, который сделает это намного лучше.
Я знаю, что это было много лет назад, но для всех, кто проходит этот путь - с помощью дизайнера вам не нужно будет ничего делать. Вам не нужно будет бороться с файлом xsd, и ваш SQL будет одним или несколькими параметрами запросов в таблице. Типизированные наборы данных и табличные адаптеры не так плохи, как предполагал их представитель на SO - просто никто не знает, как правильно их использовать! – peterG