Nuestros mejores investigadores han agotado sus reservas de café, en su búsqueda diariamente por la resolución, hasta que Armando halló el resultado en GitHub y ahora la compartimos con nosotros.
Solución:
Establecer el extranjero key como primario keyy luego establezca la relación en ambos primarios key campos. ¡Eso es todo! Deberías ver un key firmar en ambos extremos de la línea de relación. Esto representa un uno a uno.
Verifique esto: Diseño de base de datos de SQL Server con una relación uno a uno
Estoy bastante seguro de que es técnicamente imposible en SQL Server tener una relación Verdadera 1 a 1, ya que eso significaría que tener para insertar ambos registros al mismo tiempo (de lo contrario, obtendría un error de restricción al insertar), en ambas tablas, con ambas tablas teniendo un key relación entre sí.
Dicho esto, el diseño de su base de datos descrito con un extranjero key es una relación de 1 a 0..1. No hay restricción posible que requiera un registro en la tabla B. Puede tener una pseudo-relación con un disparador que crea el registro en la tablaB.
Así que hay algunas pseudo-soluciones
Primero, almacene todos los datos en una sola tabla. Entonces no tendrás problemas en EF.
O En segundo lugar, su entidad debe ser lo suficientemente inteligente como para no permitir una inserción a menos que tenga un registro asociado.
O en tercer lugar, y lo más probable, tiene un problema que está tratando de resolver y nos está preguntando por qué su solución no funciona en lugar del problema real que está tratando de resolver (un problema XY).
ACTUALIZAR
para explicar en LA REALIDAD cómo las relaciones 1 a 1 no funcionan, utilizaré la analogía del dilema del huevo o la gallina. No tengo la intención de resolver este dilema, pero si tuviera una restricción que dice que para agregar un Huevo a la tabla Huevo, la relación del Pollo debe existir, y el pollo debe existir en la tabla, entonces no podías agregar un huevo a la mesa de huevos. Lo contrario también true. No puede agregar un Pollo a la tabla Pollo sin que la relación con el Huevo y el Huevo existan en la tabla Huevo. Por lo tanto, no se pueden hacer todos los registros en una base de datos sin romper una de las reglas/restricciones.
Base de datos nomenclatura de una relación uno a uno es engañosa. Todas las relaciones que he visto (por lo tanto, mi experiencia) serían más descriptivas como relaciones de uno a (cero o uno).
Esto se puede hacer mediante la creación de un extranjero primario simple key relación y establecimiento del extranjero key columna a única de la siguiente manera:
CREATE TABLE [Employee] (
[ID] INT PRIMARY KEY
, [Name] VARCHAR(50)
);
CREATE TABLE [Salary] (
[EmployeeID] INT UNIQUE NOT NULL
, [SalaryAmount] INT
);
ALTER TABLE [Salary]
ADD CONSTRAINT FK_Salary_Employee FOREIGN KEY([EmployeeID])
REFERENCES [Employee]([ID]);
INSERT INTO [Employee] (
[ID]
, [Name]
)
VALUES
(1, 'Ram')
, (2, 'Rahim')
, (3, 'Pankaj')
, (4, 'Mohan');
INSERT INTO [Salary] (
[EmployeeID]
, [SalaryAmount]
)
VALUES
(1, 2000)
, (2, 3000)
, (3, 2500)
, (4, 3000);
Revisa para ver si todo está bien
SELECT * FROM [Employee];
SELECT * FROM [Salary];
Ahora, en general, en relación extranjera principal (uno a muchos), puede ingresar varias veces EmployeeID
pero aquí se arrojará un error
INSERT INTO [Salary] (
[EmployeeID]
, [SalaryAmount]
)
VALUES
(1, 3000);
La declaración anterior mostrará un error como
Violación de la restricción CLAVE ÚNICA ‘UQ__Salary__7AD04FF0C044141D’. No se puede insertar duplicado key en el objeto ‘dbo.Salario’. el duplicado key el valor es (1).
Aquí puedes ver las comentarios y valoraciones de los usuarios
Finalizando este artículo puedes encontrar los informes de otros sys admins, tú además eres capaz insertar el tuyo si lo deseas.