Page 1 of 1
Return primary ID on object insert
Posted: Wed 25 Mar 2015 14:02
by XStranger
Hi,
I want insert to table record, primary ID generate by trigger.
When read ID, I have "Parameter 'returnIdTask' not found".
Code: Select all
Task.Attach(EntityContext1);
Task.Name := 'TEST';
Task.Save;
Label1.Caption := IntToStr(Task.IdTask);
For field IdTask in model I set
Code: Select all
Auto-Sync = OnInsert
IdGenerator = Identity (Custom)
How I get primary ID generated by trigger?
Best regards, Alexander.
Re: Return primary ID on object insert
Posted: Thu 26 Mar 2015 07:09
by AlexP
Hello,
Please specify the exact version of EntityDAC, IDE. In addition, specify the name of the DB and EntityProvider you are working with.
Re: Return primary ID on object insert
Posted: Thu 26 Mar 2015 08:06
by XStranger
Hi,
I use:
1) UniDAC version 5.3.9 for Delphi XE3
2) EntityDAC version 1.2.4 for Delphi XE3
On form for connect I have components:
1) EntityConnection
2) EntityUniDACProvider
3) UniConnection
4) InterBaseUniProvider
In EntityConnection I set:
Provider = UniDAC
Dialect = InterBase
Connection string = 'Data Provider=UniDAC; SQL Dialect=InterBase; Login Promt=False; Server=192.168.1.1; database=BDRK; username=SYSDBA; password=masterkey'
Re: Return primary ID on object insert
Posted: Thu 26 Mar 2015 09:47
by AlexP
Hello,
Thank you for the information. We have reproduced the described case and will investigate the reason for such behavior. We will inform you as soon as we have any results.
Re: Return primary ID on object insert
Posted: Mon 30 Mar 2015 11:43
by XStranger
I used my code for MS SQL Server 2012 too.
Table structure is:
Code: Select all
CREATE TABLE ASRK_TEST.dbo.RK_TASK_1 (
ID uniqueidentifier NOT NULL DEFAULT (NEWID()),
Name varchar(50) NULL,
CONSTRAINT PK_RK_TASK_1 PRIMARY KEY (ID)
) ON [PRIMARY]
GO
In model for field ID I set:
Code: Select all
Auto-Sync: OnInsert
Access: Public
Getter Access: Public
Setter Access: Public
My procedure is:
Code: Select all
procedure TForm1.Button5Click(Sender: TObject);
var Task: TRkTask1;
begin
Task := EntityContext1.CreateEntity(TRkTask1) as TRkTask1;
Task.Attach(EntityContext1);
Task.Name := 'Test by Sany 2015-03-25:0005';
Task.Save;
Label1.Caption := GUIDToString(Task.Id);
end;
On run procedure I have: 'newid() is not valid GUID value.'
Re: Return primary ID on object insert
Posted: Tue 31 Mar 2015 09:01
by AlexP
Hello,
Currently, the GUID data type is not supported for SDACDataProvider. We have already added support for the data type, this feature will be available in the next EntityDAC version.
P.S. The definition of such field in EntityDeveloper must look like the following:
Code: Select all
Auto-Sync: Always
Entity Key: True
Name: Id
Server Data Type: UNIQUEIDENTIFIER NOT NULL
Source: ID
Type: Guid
Re: Return primary ID on object insert
Posted: Wed 01 Apr 2015 10:48
by XStranger
I like use for connect - UniDAC, because I make program worked with FireBird and MS SQL Server. PostgreSQL in future.
Re: Return primary ID on object insert
Posted: Wed 01 Apr 2015 11:30
by AlexP
This feature will be supported by all the providers that work with MS SQL Server (SDAC, UniDAC, ADO, FireDAC, etc.)