Hello,
I've searched back through old postings and seen a little bit about
this back in V2, but nothing recently. Was wondering if anyone had any
idea how to handle this problem:
Take a model including two tables: ENTITYASSNTOENTITY and ENTRYSTATE,
where the column ENTRYSTATEID is present in both.
ENTITYASSNTOENTITY.ENTRYSTATEID is a FK to ENTRYSTATE.ENTRYSTATEID
(Primary Key). This is modeled as a one-to-one relationship.
Problematically, it is possible for the ENTRYSTATEID in
ENTITYASSNSTOENTITY to have a key populated in it that is now missing
in ENTRYSTATE. Certainly, this breaks integrity, but that's not under
my control for historical and other reasons. Thus, when I have an
ENTITYASSNSTOENTITY, such as eate1, and I want to get to the related
ENTRYSTATE with a "toEntryState" method, I get a hollow object that
refers to a missing ENTRYSTATE record. If I try to access any fields
within that record, I get and catch a "FaultFailureException",
indicating that I have no matching row in the database. That's all fine.
What I need to do is to gracefully handle the error by allowing the
database to "self-heal" from such a missing record. I want to populate
the hollow object with values and commit it to reinsert a row in the
database to correct for the integrity error, or create a new
ENTRYSTATE object to take the place of the hollow and absent one. I
tried to create a childDataContext, move the hollow and absent
ENTRYSTATE record to it, populate, then commitChanges, but this still
throws a follow-on exception for the missing row. If I create a new
ENTRYSTATE and try to attach it with eate1.setToEntryState
(newEntryState), I also get the same error related to the absent
record. When the application is restarted, however, all works fine,
because the missing record was committed and persisted, and now no
exceptions are thrown. The issue is that I want to handle this
gracefully with no necessary reloading.
Reading from previous postings, I saw some information on having to
treat the relationship as a many-to-one, and handling it with covering
methods. Is this the only fix for this issue? Should I commit the
missing record, invalidate the state of the ENTITYASSNSTOENTITY object
and reload?
As always. thanks for any ideas you might have.
Cheers--Lawrence
This archive was generated by hypermail 2.0.0 : Wed Oct 07 2009 - 03:18:15 EDT