|
Identity не возвращается в DataTable
|
|||
---|---|---|---|
#18+
Cat2Необязательно, но если поля бы были без разделения, то именно такая ошибка и была.А никакой ошибки и нет, собственно. Есть отсутствие действия, которое по идее должно произойти — выбор identity. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2013, 13:37 |
|
Identity не возвращается в DataTable
|
|||
---|---|---|---|
#18+
Cat2adapter.InsertCommand.Parameters.Add("@CompanyName", SqlDbType.Varcahr, 400); Лишнее при автогенерации запросов адаптера ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2013, 13:38 |
|
Identity не возвращается в DataTable
|
|||
---|---|---|---|
#18+
AntonariyCat2Необязательно, но если поля бы были без разделения, то именно такая ошибка и была.А никакой ошибки и нет, собственно. Есть отсутствие действия, которое по идее должно произойти — выбор identity. Разделенные запятой запросы не выполняются в одной транзакции. Если бы была ошибка синтаксиса, то второй запрос не выполнился бы из-за ошибки на сервере. В трассе бы его не показало. Все симптомы, как у Вас ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2013, 13:40 |
|
Identity не возвращается в DataTable
|
|||
---|---|---|---|
#18+
Cat2Разделенные запятой запросыТочкой с запятой ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2013, 13:42 |
|
Identity не возвращается в DataTable
|
|||
---|---|---|---|
#18+
Cat2Я бы все же попробовал с Output-параметрами. Например adapter.InsertCommand.Parameters.Add("@CompanyName", SqlDbType.Varcahr, 400); adapter.InsertCommand.Parameters.Add("@ShipperID", SqlDbType.Int); adapter.InsertCommand.Parameters["@ShipperID"].Direction = ParameterDirection.Output; Текст запроса: INSERT INTO dbo.Shippers (CompanyName) VALUES (@CompanyName); @ShipperID = SCOPE_IDENTITY()Зачем мне output-параметр? Чтобы сделать лишний запрос к базе? Мне нужна новая запись за один запрос, и я могу ее получить в обход адаптера. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2013, 13:47 |
|
Identity не возвращается в DataTable
|
|||
---|---|---|---|
#18+
Cat2Antonariyпропущено... А никакой ошибки и нет, собственно. Есть отсутствие действия, которое по идее должно произойти — выбор identity. Разделенные запятой запросы не выполняются в одной транзакции. Если бы была ошибка синтаксиса, то второй запрос не выполнился бы из-за ошибки на сервере. В трассе бы его не показало. Все симптомы, как у ВасТо есть адаптер выполняет только первый запрос, и пример с MSDN чуть более чем полное фуфло? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2013, 13:50 |
|
Identity не возвращается в DataTable
|
|||
---|---|---|---|
#18+
Cat2В трассе бы его не показало.В трассе показало бы ошибку, их я тоже трассирую. Но и там ошибки не было. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2013, 13:52 |
|
Identity не возвращается в DataTable
|
|||
---|---|---|---|
#18+
Alex KuznetsovМСУпропущено... Ну так делай свой IDataContext отдельным проектом, через IoC общайся с ним из основного MVC приложения. Всё тоже самое, по сути. Только прокси службу по WSDL тебе сгенерит не EF, а Service Reference генератор.Делать свой IDataContext ещё то извращение... Лучше уж свои модели реализующие IEnumerable и скрывающие обращение к вэб сервисам... Ты какую-то чушь написал. Точно понял, о чём речь? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2013, 13:56 |
|
Identity не возвращается в DataTable
|
|||
---|---|---|---|
#18+
AntonariyТо есть адаптер выполняет только первый запрос, и пример с MSDN чуть более чем полное фуфло? Примерно так. InsertCommand предназначена для работы через adapter.Update, которая вызывается на событие принятия изменений данных в строке таблицы. При этом в DataTable инкрементное поле обычно получает какое-то значение. Null, если для поля в DataTable не задан инкремент. Обычно задается начальное значение -1, шаг -1. После вставки строки в таблицы базы он Update возвращает значения поле в ПАРАМЕТРАХ, причем параметры должны быть привязаны к полям DataTable. Поскольку у меня привязка обычно идет через визуальные контролы, то я забыл написать в примере написать. adapter.InsertCommand.Parameters["@ShipperID"].SourceColumn = "ShipperID"; ======================== Для того, что бы получить вставленную строку без Update надо выполнить InsertCommand отдельно adapter.InsertCommand.ExecuteReader(); Но при этом она не вставит строку в DataTable ! ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2013, 14:24 |
|
Identity не возвращается в DataTable
|
|||
---|---|---|---|
#18+
Пока отвечал, десять раз отрывали. Прочитал - запутанно написал. Резюме. 1. adapter.Update не может возвратить рекордсет. Он возвращает только количество затронутых записей. Получить данные из него можно через output-параметры запроса. 2. Запрос выполненный не через adapter.Updatе ничего не меняет в DataTable ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2013, 15:08 |
|
Identity не возвращается в DataTable
|
|||
---|---|---|---|
#18+
Cat2Примерно так. Ясно. Cat21. adapter.Update не может возвратить рекордсет. Он возвращает только количество затронутых записей. Получить данные из него можно через output-параметры запроса.Получается, адаптер не может сам вернуть новые записи, в любом случае придется делать свой запрос? Cat22. Запрос выполненный не через adapter.Updatе ничего не меняет в DataTableСамо собой. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2013, 15:26 |
|
Identity не возвращается в DataTable
|
|||
---|---|---|---|
#18+
AntonariyПолучается, адаптер не может сам вернуть новые записи, в любом случае придется делать свой запрос? Адаптер возвращает записи только при вызове методов Fill/GetData ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2013, 15:52 |
|
Identity не возвращается в DataTable
|
|||
---|---|---|---|
#18+
Сделайте как я написал выше, с output-параметром. Лучше бы, конечно, обернуть в хранимую процедуру, но у Вас уважительная причина - надо быстро, сделать, а потом оптимизировать. Хотя... Часто реализация решений "в лоб" в итоге занимают больше времени, чем продуманных. Не люблю SqlCommandBuilder. Хрен знает, что там получиться. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2013, 16:02 |
|
Identity не возвращается в DataTable
|
|||
---|---|---|---|
#18+
Cat2Сделайте как я написал выше, с output-параметром. Лучше бы, конечно, обернуть в хранимую процедуру, но у Вас уважительная причина - надо быстро, сделать, а потом оптимизировать.Ок, попробую. Правда быстро уже не надо, adodb больше не глючит. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2013, 16:17 |
|
Identity не возвращается в DataTable
|
|||
---|---|---|---|
#18+
Antonariyadodb больше не глючит. adodb не существует уже. Есть ADO.NET/ Оно не глючит. Глюки появляются при его неправильном использовании ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2013, 18:52 |
|
Identity не возвращается в DataTable
|
|||
---|---|---|---|
#18+
МСУAlex Kuznetsovпропущено... Делать свой IDataContext ещё то извращение... Лучше уж свои модели реализующие IEnumerable и скрывающие обращение к вэб сервисам... Ты какую-то чушь написал. Точно понял, о чём речь?Возможно не совсем... Ткни носом в описание IDataContext, как ты его понимаешь... А то поиск по MSDN внятного ничего не дал... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2013, 12:30 |
|
Identity не возвращается в DataTable
|
|||
---|---|---|---|
#18+
Alex KuznetsovВозможно не совсем... Ткни носом в описание IDataContext, как ты его понимаешь... А то поиск по MSDN внятного ничего не дал... Так это просто абстракция :) Вообщем, начинай читать от сюда http://msdn.microsoft.com/en-us/library/ff921087.aspx ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2013, 12:34 |
|
Identity не возвращается в DataTable
|
|||
---|---|---|---|
#18+
Cat2Antonariyadodb больше не глючит. adodb не существует уже. C:\Program Files (x86)\Microsoft.NET\Primary Interop Assemblies\adodb.dll ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2013, 20:31 |
|
Identity не возвращается в DataTable
|
|||
---|---|---|---|
#18+
AntonariyТема, наверное, заезженная, но каменный цветок не выходит. Делаю по статье: http://msdn.microsoft.com/en-us/library/ks9f57t0(VS.80).aspx Код: vbnet 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.
При adapter.Update происходит исполнение insert, данные вставляются, но select не происходит (смотрю профайлер), а после adapter.Update InsertCommand.CommandText возвращается измененный, без селекта. Что я делаю неправильно? MSSQL 2008 R2 Все (почти) правильно: this is not a bug - it's a feature. :) Вместо builder.GetXXXCommand попробуйте использовать builder.GetXXXCommand.Clone. И кроме adapter.Update(dc) больше ничего не нужно для получения новых значений идентити с сервера обратно в программу - без выполнения дополнительных запросов к серверу и без лишних обработчиков. Пример (на С#) с SqlCommandBuilder можно посмотреть, например, тут ... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2013, 01:11 |
|
|
start [/forum/topic.php?fid=20&msg=38474284&tid=1403633]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
55ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 159ms |
0 / 0 |