2010-01-05 5 views
0

Subsonic renvoie 00000000-0000-0000-0000-000000000000 lorsque j'insère un enregistrement et essaie d'obtenir sa clé après l'insertion.Subsonic2.2 et NEWSEQUENTIALID() Colonne de la clé primaire

product.Save(); 
GUID = product.ProdID; 

L'enregistrement est inséré correctement avec les GUID corrects.

Une idée sur la façon de résoudre ce problème? J'utilise la version 2.2.0.0

Ceci est mon schéma de la table

GO 

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
SET ANSI_PADDING ON 
GO 
CREATE TABLE [dbo].[ISA_810_ControlTracking](
    [ISAID] [uniqueidentifier] ROWGUIDCOL NOT NULL CONSTRAINT  [DF_ISA_810_ControlTracking_ISAID] DEFAULT (newsequentialid()), 
    [ISA000_01_Authorization_Information_Qualifier] [varchar](2) NOT NULL, 
    [ISA000_02_Authorization_Information] [varchar](10) NOT NULL, 
    [ISA000_03_Security_Information_Qualifier] [varchar](2) NOT NULL, 
    [ISA000_04_Security_Information] [varchar](10) NOT NULL, 
    [ISA000_05_Interchange_Id_Qualifier] [varchar](2) NOT NULL, 
    [ISA000_06_Interchange_Sender_Id] [varchar](15) NOT NULL, 
    [ISA000_07_Interchange_Id_Qualifier] [varchar](2) NOT NULL, 
    [ISA000_08_Interchange_Receiver_Id] [varchar](15) NOT NULL, 
    [ISA000_09_Interchange_Date] [datetime] NOT NULL, 
    [ISA000_10_Interchange_Time] [datetime] NOT NULL, 
    [ISA000_11_Interchange_Control_Standards_Identifier] [varchar](1) NOT NULL, 
    [ISA000_12_Interchange_Control_Version_Number] [varchar](5) NOT NULL, 
    [ISA000_13_Interchange_Control_Number] [int] NOT NULL, 
    [ISA000_14_Acknowledgment_Requested] [varchar](1) NOT NULL, 
    [ISA000_15_Usage_Indicator] [varchar](1) NOT NULL, 
    [ISA000_16_Component_Element_Separator] [varchar](1) NOT NULL, 
    [IEA000_01_Number_Of_Included_Functional_Groups] [int] NOT NULL, 
    [IEA000_02_Interchange_Control_Number] [int] NOT NULL, 
CONSTRAINT [PK_ISA_810_ControlTrackingIndex] PRIMARY KEY CLUSTERED 
(
    [ISAID] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,  ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY], 
CONSTRAINT [IX_ISA_810_ControlTracking] UNIQUE NONCLUSTERED 
(
    [ISA000_06_Interchange_Sender_Id] ASC, 
    [ISA000_08_Interchange_Receiver_Id] ASC, 
    [ISA000_13_Interchange_Control_Number] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,  ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] 

GO 
SET ANSI_PADDING OFF 

Répondre

0

Contrairement types d'identité, les applications ont aucun moyen de déterminer le GUID généré à l'insertion. Bien que cela soit possible dans T-SQL en utilisant la clause OUTPUT: INSERT ... OUTPUT inserted.$ROWGUIDCOL VALUES(...) la plupart des ORM ne sauront pas comment faire. Étant donné que le guid est un guid et n'a pas d'importance qui le génère, je vous recommande de le générer dans le client avant d'enregistrer un nouvel enregistrement, en utilisant UuidCreateSequential.

Questions connexes