Entity Framework One-To-One [Answered]
Code at: https://paste.mod.gg/rccwzntafwoj/0
When attempting to change the database I'm getting:
The dependent side could not be determined for the one-to-one relationship between 'Room.Vet' and 'Vet.Room'. To identify the dependent side of the relationship, configure the foreign key property. If these navigations should not be part of the same relationship, configure them independently via separate method chains in 'OnModelCreating'. See http://go.microsoft.com/fwlink/?LinkId=724062 for more details.
OR
The property 'Room.Vet' is of type 'Vet' which is not supported by the current database provider. Either change the property CLR type, or ignore the property using the '[NotMapped]' attribute or by using 'EntityTypeBuilder.Ignore' in 'OnModelCreating'.
I wanted to be able to create a Room that can have 0 or 1 Vets, and create a Vet that has 0 or 1 Rooms.
What am I doing incorrectly?
Thanks in advance.
BlazeBin - rccwzntafwoj
A tool for sharing your source code with the world!
Relationships - EF Core
How to configure relationships between entity types when using Entity Framework Core
12 Replies
You need to define the relationship explicitly
Might need
.HasForeignKey()
as wellI was currently doing:
Which prompts the second error when trying to submit changes.
Configure only one side of the relationship, it's enough
Thank you, understood, but it continues with the same error (the first one).
What's your config now?
Same that's on the link for code so:
Still no
.HasForeignKey<T>()
I see
The docs you linked talk about it as wellI might be wrong, please tell me but I thing the .HasForeignKey() makes it so it cannot be nullable, or is that completely incorrect?
That's incorrect
.IsRequired()
is what sets it
Also, make the key nullable just to make sure
So not public int VetId { get; set; }
but public int? VetId { get; set; }
for exampleShouldn't have assumed that .HasForeignKey() determined requirement. Thank you so much!
✅ This post has been marked as answered!