Diese Abfrage, wenn auf ADO.net lief mit MissingSchemaAction.AddWithKey
wirft Ausnahme:ADO.net SQL Server 2012 - Abfrage mit zusammengesetzten Schlüsseln und MissingSchemaAction.AddWithKey falsch Einschränkung fügt
Fehler beim Aktivieren. Eine oder mehrere Zeilen enthalten Werte, die Nicht-Null-, eindeutige oder Fremdschlüsselbeschränkungen verletzen.
Abfrage:
SELECT map.GroupId, b.PersonId
FROM [GroupPersonMap] as map
INNER JOIN [Person] AS b ON b.PersonId = map.PersonId
GROUP BY map.GroupId, b.PersonId
Inspizieren Einheimischen zeigt, dass eine eindeutige Einschränkung für PersonId
hinzugefügt wurde. Nicht nur das, aber das Ausführen derselben Abfrage in SQL Server Manager gibt eine Ergebnismenge ohne Warnungen oder Fehler zurück. Dieser genaue Code wurde für SQL Server 2005 verwendet. Wenn Sie diese Abfrage in SQL Server 2005 ausführen, erstellt die Abfrage in ADO.net ordnungsgemäß eine zusammengesetzte Integritätsbedingung. Ist das ein Upgrade-Problem?
Als eine Randnotiz, weiß ich, dass die Einstellung EnforceConstraints = false
eine Problemumgehung bietet. Idealerweise möchte ich dieses Problem an der Wurzel lösen.
-Setup zu reproduzieren:
CREATE TABLE [GroupPersonMap]
(
[GroupId] [int] NOT NULL,
[PersonId] [int] NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE [GroupPersonMap] ADD CONSTRAINT [PK_GroupPersonMAP] PRIMARY KEY CLUSTERED ([GroupId], [PersonId])
CREATE TABLE [Person]
(
[PersonId] [int] NOT NULL IDENTITY(1, 1),
[Val] INT
) ON [PRIMARY]
GO
ALTER TABLE [Person] ADD CONSTRAINT [PK_Person] PRIMARY KEY CLUSTERED ([PersonId])
Dann Einfügen Werte:
INSERT INTO [GroupPersonMap]
SELECT 1, 1
UNION ALL
SELECT 2, 1
INSERT INTO [Person]
SELECT 1
An welchem Punkt tritt diese Fehlermeldung auf? Nach dem 2. Einsatz? – Codeman