Ich versuche, einen Datensatz in eine Tabelle mit Linq einzufügen, aber die gefürchteten Kann nicht eine Einheit mit einem Schlüssel hinzufügen, die Verwendung Fehler zu erhalten, ist bereits inInsertOnSubmit = Kann nicht eine Einheit mit einem Schlüssel hinzufügen, die bereits in Gebrauch ist
'If the same data exists for the same patient in a record less that 21 days old then drop it
Dim RecordLookup As Integer = 0
RecordLookup = (From rc In CDEvodb.RISKCHANGEs _
Where rc.NHI = tmpNHI And _
rc.RECDATE > Date.Now.AddDays(-21) And _
rc.BPSYS = Convert.ToDecimal(Drow.Item("BPSYS")) And _
rc.CHOL = Convert.ToDecimal(Drow.Item("CHOL")) And _
rc.HDL = Convert.ToDecimal(Drow.Item("HDL"))).Count()
If (RecordLookup = 0) Then
Dim riskchange As New RISKCHANGE
riskchange.NHI = Drow.Item("NHI")
riskchange.RECDATE = Date.Now.Date()
riskchange.RISK = CalculatedRisk
riskchange.BPSYS = Drow.Item("BPSYS")
riskchange.CHOL = Drow.Item("CHOL")
riskchange.HDL = Drow.Item("HDL")
Try
CDEvodb.RISKCHANGEs.InsertOnSubmit(riskchange)
Catch ex As Exception
myLogging.OutputError("<" & DateTime.Now.ToString & "> " & "Error - creating risk change record in dataset for patient " & Drow.Item("NHI").ToString() & " - " & ex.Message)
End Try
End If
Grundsätzlich ich für einen passenden Datensatz auf die Suche in einer Tabelle (nicht das Identity-Feld einschließlich), die weniger als 21 Tage alt ist. Wenn ich keinen finde, erstelle ich eine Instanz einer Zeile und setze sie, um sie einzufügen.
Die Funktion SubmitChanges ruft einige Zeilen ab.
Drow ist eine DataRow aus einem Dataset, das zuvor mit einer SQLClient-Verbindung befüllt wurde (der Grund dafür ist, dass ich noch nicht vollständig auf Linq konvertiert habe, sondern erst jetzt neue Funktionen).
Prost im Voraus.
das ist das erstellen Skript für die Tabelle:
USE [CDEvolution]
GO
/****** Objekt:. Tabelle [dbo] [RISKCHANGES] Script Date: 05/14.40.15 13/2009 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
SET ANSI_PADDING ON
GO
CREATE TABLE GO [DBO]. [RISKCHANGES] (
[NHI] [varchar](7) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[RECDATE] [datetime] NOT NULL,
[RISK] [numeric](15, 0) NOT NULL,
[BPSYS] [numeric](15, 0) NOT NULL,
[CHOL] [numeric](15, 1) NOT NULL,
[HDL] [numeric](15, 1) NOT NULL,
[POSTED] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[IDENTITY] [uniqueidentifier] NOT NULL CONSTRAINT [DF_RISKCHANGES_IDENTITY]
DEFAULT (newid()) ,
CONST Raint [PK_RISKCHANGES] PRIMARY KEY CLUSTERED
(
[IDENTITY] ASC
) MIT (PAD_INDEX = AUS, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
können Sie das Tabellenschema posten? – RobS