Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Соединение с разными серверами БД / 25 сообщений из 53, страница 1 из 3
18.03.2009, 10:41
    #35875893
5копеек
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соединение с разными серверами БД
В приложении используется класс для соединения с MS sql
Сейчас необходимо добавить возможность соединения с Oracle.
Доработал класс он работает но не уверен что "идеологически" правильно все написал и в дальнейшем не вылезут грабли.
Покритикуйте, выскажите мнения пожалуйста.

код ниже
Загрузка результатов через dataAdapter
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
		/// <summary>
		/// Загрузка DataTable
		/// </summary>
		/// <param name="cmd"></param>
		public void LoadResult(System.Data.OracleClient.OracleCommand cmd)
		{
			LoadResult((System.Data.Common.DbCommand)cmd);
		}
                /// <summary>
		/// Загрузка DataTable
		/// </summary>
		/// <param name="cmd"></param>
		public void LoadResult(System.Data.SqlClient.SqlCommand cmd)
		{
			LoadResult((System.Data.Common.DbCommand)cmd);
		}

		/// <summary>
		/// Загрузка DataTable
		/// </summary>
		/// <param name="cmd"></param>
		public void LoadResult(System.Data.Common.DbCommand cmd)
		{
			if (cmd.GetType().FullName == "System.Data.OracleClient.OracleCommand")
			{
				OracleDataAdapter orada = new OracleDataAdapter();
				orada.SelectCommand = (OracleCommand)cmd;
				orada.Fill(DataTable);
				orada.Dispose();
			}
			else if (cmd.GetType().FullName == "System.Data.SqlClient.SqlCommand")
			{
				SqlDataAdapter mssqlda = new SqlDataAdapter();
				mssqlda.SelectCommand = (SqlCommand)cmd;
				mssqlda.Fill(DataTable);
				mssqlda.Dispose();
			}
		}

Выполнение запроса и обработка ошибок
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
public enum runtype { nodata = 0, data = 1 }
/// <summary> выполнение запроса к серверу	/// </summary>
public class sqlRun
{
	/// <summary> Информация о последней ошибке	/// </summary>
	public string cError = "";
	public static int CommandTimeout = 300;

	/// <summary>выполнение запроса на сервере</summary>
	/// <param name="cmd">команда с заполнеными параметрами</param>
	/// <param name="result">nodata - без возврата данных; data - Если ожидается возврат данных </param>
	/// <returns> тип  sqlReturn </returns>
	public sqlReturn Run(OracleCommand cmd, runtype rntp)
	{
		return sRun(cmd, rntp);
	}//Run (oracle)

	/// <summary>выполнение запроса на сервере</summary>
	/// <param name="cmd">команда с заполнеными параметрами</param>
	/// <param name="result">nodata - без возврата данных; data - Если ожидается возврат данных </param>
	/// <returns> тип  sqlReturn </returns>
	public sqlReturn Run(SqlCommand cmd, runtype rntp)
	{
		return sRun(cmd, rntp);
	}//Run (oracle)

	/// <summary>выполнение запроса на сервере	oracle or mssql /// </summary>
	/// <param name="cmd">команда с заполнеными параметрами</param>
	/// <param name="result">nodata - без возврата данных; data - Если ожидается возврат данных </param>
	/// <returns> тип  sqlReturn </returns>
	private sqlReturn sRun(System.Data.Common.DbCommand cmd, runtype rntp)
	{
		cError = "";
		string RetMsg;
		RetMsg = "";
		sqlReturn retval = new sqlReturn();
		using (cmd.Connection)
		{
			try
			{
				cmd.Connection.Close();
				cmd.Connection.Open();
				cmd.CommandTimeout = CommandTimeout;
				if (rntp == runtype.data) //ожидаются данные
				{
					retval.searchResult = new SearchResult();
					retval.searchResult.LoadResult(cmd);
					retval.searchResult.PageIndex = -1;
					retval.searchResult.PageSize = -1;
					retval.searchResult.TotalRowCount = 1;
				}
				else
				{
					cmd.ExecuteNonQuery();
				}
				cmd.Connection.Close();
				retval.ok = true;
			}//try
			catch (Exception ex)
			{
				cmd.Connection.Close();
				RetMsg = "Выполнение команды на сервере неудачно.\n" + ex.Message + "\n" + ex.Data.ToString() + "\n";
				retval.ok = false;
				retval.searchResult = null;
			}
		} //using (cmd.Connection)
		if (cmd.Parameters.Contains("@Error") && (string)cmd.Parameters["@Error"].Value != "")
		{
			RetMsg = RetMsg + (string)cmd.Parameters["@Error"].Value;
		}
		retval.sqlError = RetMsg;
		cError = retval.sqlError;
		return retval;
	}//sRun (oracle or mssql)
	#endregion
}
...
Рейтинг: 0 / 0
18.03.2009, 11:06
    #35875965
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соединение с разными серверами БД
Откройте для себя интерфейсы IDbConnection,IDbCommand,IDbDataAdapter,IDbDataParameter,
класс DbProviderFactories

Когда надоест - посмотрите на ORM
...
Рейтинг: 0 / 0
18.03.2009, 11:10
    #35875983
alexdr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соединение с разными серверами БД
Я, конечно, дико извиняюсь ;), но ковыряться в коде лениво... сорри.

Тут в мелкософте наваяли бесплатную библиотеку Enterprise Library , в которой существует блок с классами, решающими сходные проблемы. Все что необходимо, это добавить референс на необходимые DLL и пользоваться готовыми классами, сконфигурировав соотвествующие датапровайдеры в конфигурационном файле (это полторы минуты работы). В библиотеке еще много чего вкусного найти можно. Код открыт. Сырцы прилагаются.
...
Рейтинг: 0 / 0
18.03.2009, 11:15
    #35876002
qu-qu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соединение с разными серверами БД
5копеек...
Покритикуйте, выскажите мнения пожалуйста.
...
Все 3 LoadResult метода можно заменить одним:
Код: plaintext
1.
2.
3.
4.
public void LoadResult(System.Data.Common.DbCommand cmd)
{
	DataTable.Load((System.Data.IDataReader)cmd.ExecureReader());
}
...
Рейтинг: 0 / 0
18.03.2009, 11:38
    #35876110
Compositum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соединение с разными серверами БД
Изопропил
класс DbProviderFactories
+1
...
Рейтинг: 0 / 0
18.03.2009, 12:04
    #35876215
5копеек
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соединение с разными серверами БД
ИзопропилОткройте для себя интерфейсы IDbConnection,IDbCommand,IDbDataAdapter,IDbDataParameter,
класс DbProviderFactories

Когда надоест - посмотрите на ORM

Насчет ORM, боюсь я программ которые сами генерят запросы.
Собственно в приложении уже есть некое подобие ORM, средний слой, т.е. у классов есть методы сохраниться загрузиться и т.д.

Насчет DbProviderFactories можно меня ткнуть в доку какую нить или на пальцах обьяснить. в MSDN-е поискал что то не понял ни чего.
...
Рейтинг: 0 / 0
18.03.2009, 12:05
    #35876217
5копеек
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соединение с разными серверами БД
alexdrEnterprise Library

Спасибо скачал, изучаю.
...
Рейтинг: 0 / 0
18.03.2009, 12:08
    #35876228
5копеек
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соединение с разными серверами БД
qu-qu5копеек...
Покритикуйте, выскажите мнения пожалуйста.
...
Все 3 LoadResult метода можно заменить одним:
Код: plaintext
1.
2.
3.
4.
public void LoadResult(System.Data.Common.DbCommand cmd)
{
	DataTable.Load((System.Data.IDataReader)cmd.ExecureReader());
}


Спасибо.

В случае если нужна подстройка для какого то конкретного источника данных.
Вопрос выбор источника данных через
Код: plaintext
cmd.GetType().FullName == "System.Data.OracleClient.OracleCommand"
правильный подход или источник будущих ошибок ?
...
Рейтинг: 0 / 0
18.03.2009, 12:30
    #35876316
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соединение с разными серверами БД
Как бы не в тему, но, вроде и по теме: как в контексте фабрики подрывать xCommandBuilder (4 example, xCommandBuilder.DeriveParameters() )?
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
18.03.2009, 12:32
    #35876327
Compositum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соединение с разными серверами БД
5копеек
В случае если нужна подстройка для какого то конкретного источника данных.
Вопрос выбор источника данных через
Код: plaintext
cmd.GetType().FullName == "System.Data.OracleClient.OracleCommand"
правильный подход или источник будущих ошибок ?
на мой взгляд - это не верный подход.
...
Рейтинг: 0 / 0
18.03.2009, 12:33
    #35876336
5копеек
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соединение с разными серверами БД
Compositum5копеек
В случае если нужна подстройка для какого то конкретного источника данных.
Вопрос выбор источника данных через
Код: plaintext
cmd.GetType().FullName == "System.Data.OracleClient.OracleCommand"
правильный подход или источник будущих ошибок ?
на мой взгляд - это не верный подход.

Что бы вы посоветовали?
...
Рейтинг: 0 / 0
18.03.2009, 12:39
    #35876358
Compositum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соединение с разными серверами БД
5копеек
Что бы вы посоветовали?
используйте DbProviderFactories для получения нужного вам провайдера (DbProviderFactory), который, в свою очередь создаст нужные вам экземпляры всех классов, заточенных именно под конкретную СУБД.
Код получите единый, т.е. менять ничего не придется, и сможете влёт переключаться на любой др. СУБД.
сейчас у меня нет под рукой кода, но дома лежит подробный развернутый демонстрационный код (написал для консольного приложения). Если захотите - вечером приду домой и выложу его в этом топике.
...
Рейтинг: 0 / 0
18.03.2009, 12:44
    #35876379
5копеек
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соединение с разными серверами БД
Compositum5копеек
Что бы вы посоветовали?
используйте DbProviderFactories для получения нужного вам провайдера (DbProviderFactory), который, в свою очередь создаст нужные вам экземпляры всех классов, заточенных именно под конкретную СУБД.
Код получите единый, т.е. менять ничего не придется, и сможете влёт переключаться на любой др. СУБД.
сейчас у меня нет под рукой кода, но дома лежит подробный развернутый демонстрационный код (написал для консольного приложения). Если захотите - вечером приду домой и выложу его в этом топике.

Был бы весьма признателен.
Спасибо за помощь.
...
Рейтинг: 0 / 0
18.03.2009, 13:37
    #35876566
qu-qu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соединение с разными серверами БД
Compositum...
сейчас у меня нет под рукой кода, но дома лежит подробный развернутый демонстрационный код (написал для консольного приложения)...
А у меня как раз под рукой это есть (может быть не такое подробное и развернутое, но работало когда-то):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
using System;
using System.IO;
using System.Data;
using System.Data.Common;
using System.Text;
//using System.Data.Transactions;

public class Script {
	public static void Main (string[] args) {
   	if (args.Length < 3) {
   		Console.WriteLine ("Usage: <progname>[.exe] \"DbProviderFactoryName\" \"<connection_string>\" [\"<query_string1>\"|\"<script_file1>\" \"<query_string2>\"|\"<script_file2>\" ... \"<query_stringN>\"|\"<script_fileN>\"] ");
   		return;
   	}
		try {
			string dbProviderFactoryName = args[0];
			string dbConnectionString = args[1];
			string[] commandTexts = new string[args.Length - 2]; 
			Array.Copy(args, 2, commandTexts, 0, args.Length - 2);
			DbProviderFactory dbf = DbProviderFactories.GetFactory (dbProviderFactoryName);
				using (DbConnection cnn = dbf.CreateConnection ()) {
					cnn.ConnectionString = dbConnectionString;
					cnn.Open();
					DbTransaction trs = cnn.BeginTransaction();
					try {
						foreach (string commandText in commandTexts) {
							using (DbCommand cmd = dbf.CreateCommand()) {
								cmd.CommandType = CommandType.Text;
								cmd.CommandText = commandText;
								cmd.Connection = cnn;
								cmd.Transaction = trs;
								if (File.Exists(commandText)) {
									using (StreamReader sr = new StreamReader(commandText)) {
										cmd.CommandText = sr.ReadToEnd();
									}
								}
								Console.WriteLine (cmd.CommandText);
                        if (cmd.CommandText.Trim().ToLower().StartsWith("select")) {
                           using (DbDataReader dr = cmd.ExecuteReader()) {
                              while (dr.Read()) {
                                 object[] o = new object[dr.VisibleFieldCount];
                                 dr.GetValues(o);
                                 foreach (object v in o)
                                    Console.Write ("\t\t{0};", v);
                                 Console.WriteLine ();
                              }
                           }
                        }
                        else   
								   Console.WriteLine ("{0} rows affected.", cmd.ExecuteNonQuery());
							}
						}
						trs.Commit();
					}
					catch {
						trs.Rollback();
						throw;
					}
				}
		}
		catch (Exception ex) {
			Console.WriteLine (ex.ToString());
		}
	}
}
...
Рейтинг: 0 / 0
18.03.2009, 14:48
    #35876796
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соединение с разными серверами БД
Compositum
используйте DbProviderFactories для получения нужного вам провайдера (DbProviderFactory), который, в свою очередь создаст нужные вам экземпляры всех классов, заточенных именно под конкретную СУБД

тынць ?
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
18.03.2009, 14:59
    #35876822
Compositum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соединение с разными серверами БД
Ex_Soft
Compositum
используйте DbProviderFactories для получения нужного вам провайдера (DbProviderFactory), который, в свою очередь создаст нужные вам экземпляры всех классов, заточенных именно под конкретную СУБД

тынць ?
_________________
"Helo, word!" - 17 errors 56 warnings

нет это не оно. я именно о родном для .net framework классе: DbProviderFactories. там всё предельно ясно и удобно
...
Рейтинг: 0 / 0
18.03.2009, 15:05
    #35876839
Compositum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соединение с разными серверами БД
5копеекCompositum5копеек
Что бы вы посоветовали?
используйте DbProviderFactories для получения нужного вам провайдера (DbProviderFactory), который, в свою очередь создаст нужные вам экземпляры всех классов, заточенных именно под конкретную СУБД.
Код получите единый, т.е. менять ничего не придется, и сможете влёт переключаться на любой др. СУБД.
сейчас у меня нет под рукой кода, но дома лежит подробный развернутый демонстрационный код (написал для консольного приложения). Если захотите - вечером приду домой и выложу его в этом топике.

Был бы весьма признателен.
Спасибо за помощь.
нашел код (вспомнил, что я его выкладывал на форуме). Создайте новое консольное приложение, скопируйте в него весь код и запустите. поскольку все провайдеры данных реализуют единые интерфейсы, то не составит труда переключится с одной субд на др. без изменения в коде. просто в файле конфигурации храните строку подключения. А программно из нее узнаете, какой провайдер для нее используется и соответственно юзаете конкретного, нужного вам провайдера.
Код, демонструрующий это я привел когда-то здесь .
...
Рейтинг: 0 / 0
18.03.2009, 15:11
    #35876866
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соединение с разными серверами БД
Compositum
нет это не оно

Почему это "не оно"?
Compositum
я именно о родном для .net framework классе: DbProviderFactories

Ну и я ж о нем, родимом...
Compositum
там всё предельно ясно и удобно

Я тоже так считал, пока речь шла о рукомашестве и ногодрыжестве (сиречЪ - теории)
А на практике:
1. DbProviderFactory ConnectionString - родил
2. DbConnection из DbProviderFactory - родил
3. DbCommand из DbConnection - родил
4. Получить параметры SP - балалайка Ж8-/ Пришлось enum по провайдеру городить и в соответствии xCommandBuilder специфичный рожать. Мне самому это не нравится. Вот и спросил - мо я что-то упустил в этой жизни?
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
18.03.2009, 15:28
    #35876930
Compositum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соединение с разными серверами БД
Ex_Soft
4. Получить параметры SP - балалайка Ж8-/ Пришлось enum по провайдеру городить и в соответствии xCommandBuilder специфичный рожать. Мне самому это не нравится. Вот и спросил - мо я что-то упустил в этой жизни?

какие проблемы возникли с получением параметра SP ? =)
...
Рейтинг: 0 / 0
18.03.2009, 15:37
    #35876964
Compositum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соединение с разными серверами БД
CompositumEx_Soft
4. Получить параметры SP - балалайка Ж8-/ Пришлось enum по провайдеру городить и в соответствии xCommandBuilder специфичный рожать. Мне самому это не нравится. Вот и спросил - мо я что-то упустил в этой жизни?

какие проблемы возникли с получением параметра SP ? =)
п.с. почему спрашиваю - потому, что точно знаю , что там никаких проблем нет кстати, в приведенном мною коде я показал как создается параметр для конкретного провайдера ;)

Так что у вас там с "балалайками", "рукомашеством и ногодрыжеством" уважаемый практик ?
...
Рейтинг: 0 / 0
18.03.2009, 15:42
    #35876978
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соединение с разными серверами БД
Compositum
какие проблемы возникли

как по выше описанной стройной схеме вызвать, соответственно, для:
M$ SQL - SqlCommandBuilder.DeriveParameters()
OLE DB - OleDbCommandBuilder.DeriveParameters()
FB - FbCommandBuilder.DeriveParameters()
Sybase ASE - AseCommandBuilder.DeriveParameters()
etc.
???
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
18.03.2009, 16:09
    #35877084
Compositum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соединение с разными серверами БД
Ex_Soft
как по выше описанной стройной схеме вызвать, соответственно, для:
M$ SQL - SqlCommandBuilder.DeriveParameters()
OLE DB - OleDbCommandBuilder.DeriveParameters()
FB - FbCommandBuilder.DeriveParameters()
Sybase ASE - AseCommandBuilder.DeriveParameters()
etc.
???
_________________
"Helo, word!" - 17 errors 56 warnings

насчёт DeriveParameters - тут я согласен. Значит не верно вас понял - я так понял, что вы не смогли создать (а не считать параметры из хранимки бд) параметр нужного провайдера. В этом случае действительно - без enum не обойтись, однако этот момент, на мой взгляд, можно решить, единожды - упаковав код в расширяемый метод , который будет вызываться на классе DbCommandBuilder. И назвать его (метод) соответственно: DbDeriveParameters.
В конце концов в жизни у нас не так много СУБД, чтобы эту информацию (я о составе enum) пришлось бы менять часто (имхо).
...
Рейтинг: 0 / 0
18.03.2009, 16:43
    #35877225
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соединение с разными серверами БД
Compositum
упаковав код в расширяемый метод , который будет вызываться на классе DbCommandBuilder

Маленький набросок, если можно...
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
18.03.2009, 16:49
    #35877251
5копеек
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соединение с разными серверами БД
Всем спасибо, почитал, подумал поэкспериментировал.
универсальный класс в моем случае порождает слишком много всяких если.
под каждую субд буду реализовывать свой класс обращения к данным.
В конце концов разные типы коннекшнов и т.д. для того и создавали.
Если бы все было так гладко, сделали бы один универсальный класс.
Всем спасибо...
...
Рейтинг: 0 / 0
18.03.2009, 17:20
    #35877355
Compositum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Соединение с разными серверами БД
Ex_Soft
Compositum
упаковав код в расширяемый метод , который будет вызываться на классе DbCommandBuilder

Маленький набросок, если можно...
_________________
"Helo, word!" - 17 errors 56 warnings


Я думаю, что как-то так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
    public static class MyClass
    {
        public static DbCommand DbDeriveParameters(this DbCommandBuilder source, DbCommand cmd)
        {
            DbCommand ret;
            switch (cmd.ToString())
            {                
                //Если есть еще какие нужные провайдеры - следует добавить соответствующий блок case
                case "System.Data.OleDb.OleDbCommand":
                    OleDbCommand build = (OleDbCommand) cmd;
                    OleDbCommandBuilder.DeriveParameters(build);
                    ret = build; 
                    break;
                case "System.Data.OracleClient.OracleCommand":
                    OracleCommand build_1 = (OracleCommand) cmd;
                    OracleCommandBuilder.DeriveParameters(build_1);
                    ret = build_1;
                    break;
                case "System.Data.SqlClient.SqlCommand":
                    SqlCommand build_2 = (SqlCommand) cmd;
                    SqlCommandBuilder.DeriveParameters(build_2);
                    ret = build_2;
                    break;
                case "System.Data.SqlServerCe.SqlCeCommandBuilder":
                    SqlCeCommand build_3 = (SqlCeCommand) cmd;
                    //Для SqlCeCommandBuilder не существует метода DeriveParameters
                    ret = build_3;
                    break;
                default:
                    throw new Exception("Отсутствует информация по указанному провайдеру");
                    break;
            }
            return ret;
        }
    }
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Соединение с разными серверами БД / 25 сообщений из 53, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]