|
|
|
CommandBuilder и @@Identity
|
|||
|---|---|---|---|
|
#18+
Вопрос собственно такой... Если делать DataAdapter визуальными средствами и генерировать INSERT, UPDATE и DELETE команды, то он в InsertCommand сделает все правильно, а именно: Insert into xxx (f1,f2,f3) values (@p1,@p2,@p3) select @@IDENTITY Но, как только начинаешь генерировать это в коде таким образом: SqlConnection SQL = "..." SqlDataAdapter DA = new SqlDataAdaper("select f1,f2,f3", SQL); SqlCommandBuilder CB = new SqlCommandBuilder(DA); То в InsertCommand генерится только Insert into xxx (f1,f2,f3) values (@p1,@p2,@p3) Когда делаешь визуально, часть запроса которая возвращает автоинкремент генерируется если опционально установить в Advanset Options -> Reftesh the DataSet. Неужели в коде нельзя заставить CommandBuilder генерить нормально также InsertCommand? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2008, 15:33 |
|
||
|
CommandBuilder и @@Identity
|
|||
|---|---|---|---|
|
#18+
вспомните,шаги которые проходите в визуальном мастере для dataadapter? там наверное указывается ключевое поле и т.п. а тут в SqlCommandBuilder вроде вы не указали это. или мое представление далеко от реалий? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2008, 15:40 |
|
||
|
CommandBuilder и @@Identity
|
|||
|---|---|---|---|
|
#18+
Код: plaintext ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.en/wd_adonet/html/6e3fb8b5-373b-4f9e-ab03-a22693df8e91.htm вот полная ссылка. сча дочитаю,тоже скажу че нито. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2008, 15:45 |
|
||
|
CommandBuilder и @@Identity
|
|||
|---|---|---|---|
|
#18+
CommandBuilder все нормально определяет. Потому как из адаптера но в любом случае забирает схму таблицы и не генерирует insert into для автоинкрементного поля, хотя, к примеру, в SelectCommand оно фигурирует. Выходит что все он понимает... Не в этом дело. Просто совершенно не видно никаких свойств в объекте коммандбилдера которые могли бы вкл/выкл Optimistic concurrecy и соотв других опций... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2008, 15:47 |
|
||
|
CommandBuilder и @@Identity
|
|||
|---|---|---|---|
|
#18+
смысл такой :) билдер этого не будет делать. если вам надо то идите по этой ссылке. совет из практики,забудьте о билдере. забудьте,об автоапдейтах простого. пишите руками. тут не такая тесная связь слоя данных со слоем визуальных контролов,чтобы простые случаи делались автоматически. выход только в руках ваших. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2008, 15:48 |
|
||
|
CommandBuilder и @@Identity
|
|||
|---|---|---|---|
|
#18+
Да понятно что про билдер забыть надо... Просто лениво писать все руками, когда идет работа только с 1 таблицей :) Просто всего 1 таблица ни с кем не связаная.... Решение нашлось такое: SRC] SqlCommandBuilder cb = new SqlCommandBuilder(DA_Money); DA_Money.InsertCommand = new SqlCommandBuilder(DA_Money).GetInsertCommand(); DA_Money.InsertCommand.CommandText += " SELECT @ID_OUT = @@IDENTITY"; DA_Money.InsertCommand.Parameters.Add("ID_OUT", SqlDbType.Int, 0, "id"); DA_Money.InsertCommand.Parameters["ID_OUT"].Direction = ParameterDirection.Output; DA_Money.InsertCommand.UpdatedRowSource = UpdateRowSource.OutputParameters;[ [/src] Просто удивило что что-то надо обязательно делать визуально и нельзя сделать в коде... 0_о Глупость какая-то... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2008, 15:55 |
|
||
|
|

start [/forum/topic.php?fid=17&fpage=81&tid=1352225]: |
0ms |
get settings: |
9ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
23ms |
get topic data: |
11ms |
get forum data: |
1ms |
get page messages: |
23ms |
get tp. blocked users: |
1ms |
| others: | 239ms |
| total: | 320ms |

| 0 / 0 |
