sql >> Database >  >> RDS >> Sqlserver

EF4.1:Mogelijk om een ​​nul-of-één tot nul-of-één (0..1 tot 0..1) relatie te hebben?

Nee, het is niet mogelijk en ik betwijfel of het werkt in SQL-server. Databaserelatie vereist dat één uiteinde afhankelijk wordt. Het betekent dat het verwijst naar de primaire sleutel (PK) van een hoofdeinde - we noemen dit externe sleutel (FK). Als we het hebben over een een-op-een-relatie, moet de FK als uniek worden gemarkeerd, zodat slechts één record in de afhankelijke tabel kan verwijzen naar een bepaald record uit de hoofdtabel. De enige geldige relatie in dit geval is 0..1 - 1 waarbij de principaal kan bestaan ​​zonder afhankelijk, maar de afhankelijke kan alleen bestaan ​​wanneer deze is gerelateerd aan de bestaande principaal, omdat de FK-waarde moet worden ingesteld op de PK-waarde van de opdrachtgever. Theoretisch kan FK nul zijn, maar het hangt af van de manier waarop de database unieke beperkingen implementeert. Als de database null telt als een andere unieke waarde, kan FK voor slechts één afhankelijke record op null worden ingesteld (ik denk dat dit een geval is van SQL-server).

In EF is dit nog ingewikkelder omdat EF geen unieke beperkingen ondersteunt en daarom kun je alleen een één-op-één relatie opbouwen als FK in afhankelijke entiteit ook zijn PK is (=geen manier om het op null in te stellen). Als u FK niet op null kunt instellen, kunt u het niet nullable hebben en daarom moet de hoofdentiteit bestaan, anders zal de referentiële integriteit een fout veroorzaken.

De beste oplossing voor jou is het overwegen van Request als hoofdentiteit en Result als afhankelijk. Het verzoek moet eerst worden gemaakt en het moet in de database worden bewaard zolang het Result . Result moet dezelfde PK-waarde hebben (de kolom kan niet automatisch worden verhoogd) als het corresponderende Request (en PK moet FK zijn voor Request ).



  1. Records exporteren in Excel-bestand

  2. Maak verbinding met MySQL met behulp van SSH Tunneling in node-mysql

  3. Hoe wijzig ik de databasewaarden met PHP en MySQL?

  4. Oracle Analytic-functies - een windowing-clausule opnieuw instellen