Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / DataColumn.AutoIncrement не фунциклирует? / 1 сообщений из 1, страница 1 из 1
28.01.2009, 00:12
    #35781392
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DataColumn.AutoIncrement не фунциклирует?
Дрозофила:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
create procedure sp_Select_NULL
   @IsSelectNull bit= 0 
as
begin
   create table #tmpTable(
     Id int null,
     Name varchar( 256 ) null)

   insert into #tmpTable (Name) values ('Иванов Иван Иванович')
   insert into #tmpTable (Name) values ('Петров Петр Петрович')
   insert into #tmpTable (Name) values ('Сидоров Сидор Сидорович')
   insert into #tmpTable (Name) values ('Александров Александр Александрович')

   if @IsSelectNull= 1 
     select Id, Name from #tmpTable
   else
     select Name from #tmpTable

   drop table #tmpTable
end
go
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
tmpDataTable=new DataTable();
tmpDataColumn=tmpDataTable.Columns.Add("Id",typeof(int));
tmpDataColumn.AllowDBNull=false;
tmpDataColumn.Unique=true;
tmpDataColumn.AutoIncrement=true;
tmpDataColumn.AutoIncrementSeed= 1 ;
tmpDataColumn.AutoIncrementStep= 1 ;
tmpDataTable.PrimaryKey=new DataColumn[]{tmpDataTable.Columns["Id"]};

da=new OleDbDataAdapter("{call sp_Select_NULL}",cn);
da.Fill(tmpDataTable); //  1 

tmpDataTable.Clear();
da.SelectCommand.CommandText="{call sp_Select_NULL(?)}";
da.SelectCommand.Parameters.Add("IsSelectNull",OleDbType.Boolean).Value=true;
da.Fill(tmpDataTable); //  2 
Первый DataAdapter.Fill (когда SP возвращает только Name ) - отрабатывает как в букварике написано: т.е. Id инициализируется и инкрементируется. А, вот, второй раз (когда SP возвращает и Id (NULL), и Name ) имеем:
System.Data.ConstraintException
Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints.

Это так надо? Т.е. если что-нибудь (пусть даже NULL) возвращается в резалтсете, то весь механизм DataColumn.AutoIncrement'а преспокойно курит в сторонке? Или, все же, это както можно растолкать? Конечно, я понимаю, что, в случае, когда часть записей имеет Id, а часть - нЭт, получаем: "...здесь - играем, здесь - не играем, а здесь - рыбу заворачивали..." со всеми вытекающими. Но все же?

P.S. Проверил на FW1.1+NDP1.1sp1-KB887549-X86 && FW2.0
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / DataColumn.AutoIncrement не фунциклирует? / 1 сообщений из 1, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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