Here is the scenario:
I have a Product Entity, which has an ImageID field, so it has a relationship with the Image Entity. This is all defined in the schema and DBML.
Now, say I create a new Product entity, without a ImageID, and save it to the DB. At this point, the _Image field of the Entity has HasLoadedOrAssignedValue set to false, as it should.
Now, when I go and retrieve that entity from the DB, without an ImageID, i.e ImageID is set to null, and the Image Entity attached to it is also set to null, HasLoadedOrAssignedValue is set to true. Why?
Now, when I try and set the ImageID property to a valid int, I get a ForeignKeyReferenceAlreadyHasValueException
exception.
Now, I know that people say, "oh, you have to set the relationship property itself, so, Product.Image = someImage, not Product.ImageID = 2", but I always set the ID field, and it always works... Well, almost always.
So, my question is twofold:
The problem is something is looking at the Image property and causing it to load - perhaps even the debugger.
Set a breakpoint in the Product.Image property and see what path is causing it.
So, I had this same problem today and I don't know if this will help anyone, but it turned out that in my LINQ Entity DBML file, I had a relationship, let's say between Reviews and Users by UserID. The relationship was named User1. When I loaded the form, I used that relationship to set some information in a status bar. Unfortunately, I also had the list of users in a dropdown elsewhere on the form. When I tried to change the dropdown, therefore, it knew that the data was already in use. Once I did a separate linq query for my form status bar, everything worked. I know it's expected behavior, but it was pretty frustrating.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With