Page 1 of 1

Combobox error: have to use selectedItem

Posted: Thu 05 Jan 2012 14:14
by afva
Hello,

I work with VS2010 and we recently updated our Devart products to:

Devart dotConnect for Oracle 6.60.258.0
Devart Entity Developer 4.2.85.0
Devart OraDeveloper Tools 2.60

Since the upgrade, my comboBoxen don't work anymore.

I used to use them as follows:

Code: Select all

SelectedValuePath="ID" 
SelectedValue="{Binding Path=GESL_ID}" 
This goes wrong if I select an item, and then I select a new item.
The error comes from datasetDesigner.cs:

Code: Select all

set
            {
                if (this._GESL_ID != value)
                {
                    if (this._CT_RELA_GESLACHTEN.HasLoadedOrAssignedValue)
                    {
                        throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
                    }
I understand why this is, and if I alter the statement to:

Code: Select all

SelectedItem="{Binding Path=CT_RELA_GESLACHTEN}"
everthing works fine.

What I don't understand is why this happens now?
And do I have to change ALL MY comboboxen ?

Thank you for looking at this problem,

Posted: Tue 10 Jan 2012 11:22
by StanislavK
As far as I can understand, the combo box you've described represents the reference to a related entity, but was bound to the foreign key property ('GESL_ID') instead of the navigation property ('CT_RELA_GESLACHTEN'). Am I correct?

If yes, the situation is caused by the way LinqConnect keeps consistency of the entity graph: if the navigation property was already loaded, it is not allowed to change the property that represents the corresponding foreign key. The reason is that setting the foreign key does not change the navigation property value, hence there would be no way to determine which property (the foreign key or navigation one) keeps the actual state of the object (and which value should be persisted to the database when submitting changes).

Thus, it is recommended to change navigation properties instead. In this case, the foreign key is modified as well, keeping the entity graph consistent.

Posted: Tue 10 Jan 2012 12:08
by afva
Hello StanislavK,

Thank you for your response.
You are correct. I do understand why I get this error, I do not understand why I get this error NOW, after the upgrade. Before the upgrade everything worked fine.
Can you explain what changed ?
Thank you

Posted: Wed 11 Jan 2012 15:22
by StanislavK
A probable cause for this change in behaviour is that before updating you used another code generation template (e.g., the standard 'POCO' template or some custom template) to create entity classes. For example, the 'POCO' template generates entity classes ignorant of LinqConnect features (e.g., the EntityRef/EntitySet types are not used for navigation properties).