There is all right with it.
INSERT, UPDATE and DELETE commands are provided by SqlCommandBuilder in my code. To check ones' correctness, I called builder's properties:
builder.GetInsertCommand().CommandText;
builder.GetUpdateCommand().CommandText;
builder.GetDeleteCommand().CommandText;
There were values
INSERT INTO [myTable] ([name], [length], [comment]) VALUES (@p1, @p2, @p3)
UPDATE [myTable] SET [name] = @p1, [length] = @p2, [comment] = @p3 WHERE (([Id] = @p4) AND ([name] = @p5) AND ([length] = @p6) AND ((@p7 = 1 AND [comment] IS NULL) OR ([comment] = @p8)))
DELETE FROM [myTable] WHERE (([Id] = @p1) AND ([name] = @p2) AND ([length] = @p3) AND ((@p4 = 1 AND [comment] IS NULL) OR ([comment] = @p5)))
As fas as I understand, in my case the query INSERT takes place. In my oppinion, there is all right with it.
As for primary key, there is one in my table.