powered by simpleCommunicator - 2.0.33     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / SqlCommandBuilder и представления
10 сообщений из 10, страница 1 из 1
SqlCommandBuilder и представления
    #32111915
rmn_itam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может кто сталкивался с подобной проблемой. Есть код:

Con = New System.Data.SqlClient.SqlConnection()
Con.ConnectionString = "Server=192.168.0.30\ARROWSQL;Uid=11;Pwd=123;Database=ARROW"
Adp = New SqlClient.SqlDataAdapter("select * from v_TablRuns", "Server=192.168.0.30\ARROWSQL;Uid=11;Pwd=123;Database=ARROW")
DS = New System.Data.DataSet()
Adp.Fill(DS, "v_TablRuns")
myCommandBuilder = New System.Data.SqlClient.SqlCommandBuilder(Adp)
DataGrid1.DataSource = DS
DataGrid1.DataMember = "v_TablRuns"

затем в гриде делаю изменения, и вызываю

Adp.Update(DS, "v_TablRuns")

И получаю сообщение что билдер не может сформировать команду на изменение поскольку селект не возвращает информации о ключевых полях.

В чем же проблема? В том что v_TablRuns это представление?
...
Рейтинг: 0 / 0
SqlCommandBuilder и представления
    #32111999
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чтобы правильно сформировать ком-ды на удаление и обновление builder'у необходимо либо primary key либо unique constraint, которые будут использоваться в whwre клаузе.

из твоего View такой информации builder'у получить не удалось
...
Рейтинг: 0 / 0
SqlCommandBuilder и представления
    #32112001
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и еще поставь
myCommandBuilder = New System.Data.SqlClient.SqlCommandBuilder(Adp)
до
Adp.Fill(DS, "v_TablRuns")
...
Рейтинг: 0 / 0
SqlCommandBuilder и представления
    #32112025
rmn_itam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так это из моего представления не получилось или это для всех представлений актуально?
...
Рейтинг: 0 / 0
SqlCommandBuilder и представления
    #32112080
Фотография ziktuw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для некоторых прокатывает нормально, для некоторых прокатывает с невообразимыми глюками (реально изменяются не те записи), для большинства - не прокатывает. Конкретно не советую обновлять вьюхи, дабы избежать проблем.
...
Рейтинг: 0 / 0
SqlCommandBuilder и представления
    #32112084
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>rmn_itam
нормально работает, если view прямой образ одной таблицы. иначе - как получится (достаточно часто - криво)

если тебе интересно, посмотри на текст к-ды Update в builder'е перед выполнением. там явно будет прописана таблица (а не view) и все поля на обновление.
...
Рейтинг: 0 / 0
SqlCommandBuilder и представления
    #32112092
rmn_itam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что-то у меня какой-то конкретный глюк в коде. Не срабатывает даже с таблицами. Может у кого есть работающий пример с SqlCommandBuilder?
...
Рейтинг: 0 / 0
SqlCommandBuilder и представления
    #32112268
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
единственная причина, по которой отказывался работать builder - это наличие в таблице вычисляемых полей. и то не сам builder, а тот код, который он генерит для обновления.

для OleDb (практически тоже самое, что и в твоей программе) - работает
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
OleDbConnection cn=new OleDbConnection( "Provider=SQLOLEDB.1 ;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=TEST;Data Source=SRV7- 32 \\VSDOTNET;Use Procedure for Prepare= 1 ;Auto Translate=True;Packet Size= 4096 ;Workstation ID=SRV7- 32 ;Use Encryption for Data=False;Tag with column collation when possible=False");
cn.Open();
OleDbDataAdapter ad=new OleDbDataAdapter( "SELECT * FROM t4" , cn);
OleDbCommandBuilder bd=new OleDbCommandBuilder(ad);
DataTable tb=new DataTable( "t4" );
ad.Fill(tb);
// изменения в таблице
try
{ ad.Update(tb);
} catch(Exception ex)
{ string s=ex.ToString();
  //
}
...
Рейтинг: 0 / 0
SqlCommandBuilder и представления
    #32112303
Фотография ziktuw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rmn_itam, а у тебя в таблицах первичные ключи наличестуют?
...
Рейтинг: 0 / 0
SqlCommandBuilder и представления
    #32112436
rmn_itam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Первичные ключи в наличии. С таблицей это я загнул. Все работает. А вот с представлением траблы. Обнаружилось, что билдеру не нравится конструкция IN. Впрочем как и EXIST. А у меня на этом все представления и система безопасности построена .
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / SqlCommandBuilder и представления
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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