ich eine Frage zu haben, wie eine Tabelle Beziehung in Microsoft SQL-Server 2012Eltern-Kind-Eins-zu-Eins-Beziehung derselben Tabelle
ich zu erkennen, habe eine Tabelle (MyTable), die ein Eltern-/Kind halten sollen Struktur. Ein Elternteil kann ein Kind haben und ein Kind hat nur ein Elternteil. Dies ist eine klassische Eins-zu-Eins-Beziehung. Der oberste Eintrag hat offensichtlich keinen Elternteil. (Dies wird über eine Nullable-Eigenschaft modelliert)
Wenn ich versuche, dies in MS-SQL zu modellieren, erhalte ich eine Tabelle wie folgt.
Hier ist mein Code:
CREATE TABLE [dbo].[MyTable](
[Id] [uniqueidentifier] PRIMARY KEY NOT NULL,
[Name] [nvarchar](200) NOT NULL,
[ParentObjectId] [uniqueidentifier] NULL
)
GO
ALTER TABLE [dbo].[MyTable] WITH CHECK ADD CONSTRAINT [FK_MyTable_ParentObject] FOREIGN KEY([ParentObjectId])
REFERENCES [dbo].[MyTable] ([Id])
GO
ALTER TABLE [dbo].[MyTable] WITH CHECK ADD CONSTRAINT [Unique_ParentId] UNIQUE(ParentObjectId)
GO
ALTER TABLE [dbo].[MyTable] CHECK CONSTRAINT [FK_MyTable_ParentObject]
GO
Die Uniqe Constraint sollte sicherstellen, dass höchstens ein Elternteil es für ein Kind ist.
ABER Entity Framework lässt mich nicht die Eigenschaften ändern, um eine Eins-zu-Eins-Beziehung zu sein. Es erzeugt immer eine Eins-zu-viele-Beziehung.
BEARBEITEN: Der Code ist DB-First.
Haben Sie eine Idee, wie Sie das in MS-SQL und EntityFramework richtig modellieren können?
Können Sie EF Definition/Entities anzeigen? – ChrFin
Per Definition meinen Sie den generierten Code oder die visuelle Darstellung in VisualStudio einschließlich der Eigenschaften (.edmx-Datei)? – sternze
Oh - DB-zuerst. Ich habe Code-First angenommen. Sorry kann nicht mit DB-First helfen - ich bin allergisch gegen * .edmx Dateien ... – ChrFin