sql >> Database teknologi >  >> RDS >> Sqlserver

EF4.1:Muligt at have nul-eller-en til nul-eller-en (0..1 til 0..1) sammenhæng?

Nej det er ikke muligt og jeg tvivler på at det virker i SQL server. Databaserelation kræver, at den ene ende bliver afhængig. Det betyder, at det refererer til den primære nøgle (PK) af en hovedende - vi kalder denne fremmednøgle (FK). Hvis vi taler om en-til-en relation, skal FK markeres som unik, så kun én post i den afhængige tabel kan referere til en given post fra hovedtabellen. Den eneste gyldige relation i dette tilfælde er 0..1 - 1, hvor principal kan eksistere uden afhængig, men afhængig kan kun eksistere, når den er relateret til eksisterende principal, fordi dens FK-værdi skal sættes til PK-værdien af ​​principalen. Teoretisk kan FK være nullbar, men det afhænger af den måde, hvordan databasen implementerer unikke begrænsninger. Hvis databasen tæller null som en anden unik værdi, kan kun én afhængig post have FK sat til null (jeg tror, ​​det er et tilfælde af SQL-server).

I EF er dette endnu mere kompliceret, fordi EF ikke understøtter unikke begrænsninger, og derfor kan du kun bygge en-til-en-relation, når FK i afhængig entitet også er dens PK (=ingen måde at sætte den til null). Hvis du ikke kan indstille FK til null, kan du ikke have den nullbar, og på grund af den hovedentitet skal den eksistere, ellers vil den referentielle integritet give fejl.

Den bedste løsning for dig er at overveje Request som hovedenhed og Result som afhængig. Anmodningen skal oprettes først, og den skal opbevares i databasen, så længe Result . Result skal have samme PK-værdi (kolonnen kan ikke øges automatisk) som den tilsvarende Request (og PK skal være FK for at Request ).



  1. PL/SQL lagret procedure ud cursor til VBA ADODB.RecordSet?

  2. Få det samme resultat tilbage, når du prøver at finde forskellige data

  3. Entity Framework Code First MaxLength og FixedLegth (char vs varchar)

  4. importere sql-fil til en database ved hjælp af wamp