Μου προκάλεσε ένα σφάλμα BDC αυτή την εβδομάδα το που εκδηλώθηκε στη διεπαφή χρήστη και εν τη 12 Κυψέλη καταγραφής κατά το χρόνο εκτέλεσης.
Πρώτη, αυτό εμφανίστηκε στο περιβάλλον εργασίας χρήστη:
Δεν ήταν δυνατή η εύρεση πεδίων για εισαγωγή όλων των τιμών αναγνωριστικού για τη σωστή εκτέλεση μιας Εμφάνισης_μεθόδου Ειδικής_εύρεσης με όνομα … Εξασφαλιστεί παράμετροι εισαγωγής έχουν TypeDescriptors συσχετισμένους με κάθε αναγνωριστικό που έχει οριστεί για αυτή την οντότητα.
Εδώ είναι ένα στιγμιότυπο οθόνης:
Μπορούσε, επίσης, να προκαλέσει αυτό το μήνυμα να εμφανίζεται σε το 12 Κυψέλη καταγραφής στο θα (χρησιμοποιώντας μου κατοχυρωμένη με δίπλωμα ευρεσιτεχνίας high-tech-don't-try-this-at-home "μυστηριώδεις λάθη" μέθοδος):
11/14/2007 09:24:41.27 W3wp.exe (0x080C) 0x0B8C του SharePoint Portal Server επιχειρηματικών δεδομένων υψηλής εξαίρεση 6q4x στο BusinessDataWebPart.OnPreRender: System.InvalidOperationException: Η τιμή του αναγνωριστικού ”, τύπου ”, δεν είναι έγκυρη. Αναμενόμενη τιμή αναγνωριστικού του τύπου 'System.String'. στο Microsoft.Office.Server.ApplicationRegistry.MetadataModel.Entity.FindSpecific(Αντικείμενο[] subIdentifierValues, LobSystemInstance lobSystemInstance) στο Microsoft.SharePoint.Portal.WebControls.BdcClientUtil.FindEntity(Οντότητα οντότητα, Αντικείμενο[] userValues, LobSystemInstance lobSystemInstance) στο Microsoft.SharePoint.Portal.WebControls.BusinessDataItemBuilder.GetEntityInstance(Προβολή desiredView) στο Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.GetEntityInstance() στο Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.SetDataSourceProperties()
Έψαξα γύρω και βρήκα μερικές οδηγεί σε το Φόρουμ MSDN, αλλά δεν ήταν αρκετό για μένα να καταλάβω τι έκανα λάθος. Είδα μια εκπομπή στο Web με TED Pattison που μου εταιρεία έχει squirreled μακριά σε ένα διακομιστή και ήρθε να συνειδητοποιήσει το πρόβλημα μου.
Στο ADF μου, Είμαι σύνδεση σε μια βάση δεδομένων SQL, όπως φαίνεται:
<Ιδιότητα Όνομα="RdbCommandText" Τύπος="System.String">
<![CDATA[
ΕΠΙΛΈΞΤΕ SETID, CARRIER_ID, EFFDT, DESCR, EFF_STATUS, TAXPAYER_ID, NETWORK_ID, FRT_FORWARD_FLG, ALT_NAME1, ALT_NAME2, LANGUAGE_CD,
ΧΏΡΑ, ΔΙΕΎΘΥΝΣΗ1, 2Η ΔΙΕΎΘΥΝΣΗ, ADDRESS3, ADDRESS4, ΠΌΛΗ, NUM1, NUM2, HOUSE_TYPE, ADDR_FIELD1, ADDR_FIELD2, ADDR_FIELD3,
ΚΟΜΗΤΕΊΑ, ΚΡΆΤΟΣ, ΤΑΧΥΔΡΟΜΙΚΉ, GEO_CODE, IN_CITY_LIMIT, COUNTRY_CODE, ΤΗΛΈΦΩΝΟ, ΕΠΈΚΤΑΣΗ, ΦΑΞ, LAST_EXP_CHK_DTTM, FREIGHT_VENDOR,
INTERLINK_DLL, TMS_EXCLUDE_FLG από dbo.PS_CARRIER_ID_VW με (nolock)
ΌΠΟΥ
(SETID <> "ΜΕΤΟΧΉ") και
(χαμηλότερη(CARRIER_ID) >= κάτω(@MinId)) και
(χαμηλότερη(CARRIER_ID) <= κάτω(@MaxId)) και
(χαμηλότερη(DESCR) ΉΘΕΛΑ να κατώτερο(@InputDescr))
]]>
</Ιδιότητα>
Έδωσα ήταν ότι SQL από ένα πρόσωπο DBA και αν κατάλαβα καλά, ότι είναι ένα ειδική Προβολή δημιούργησαν μόνο για μένα. Το μοναδικό κλειδί, εκεί είναι CARRIER_ID.
Εδώ είναι το ζωύφιο που εισήγαγα:
<Αναγνωριστικά>
<Αναγνωριστικό Όνομα="CARRIER_ID" Όνομα τύπου="System.String" />
<Αναγνωριστικό Όνομα="DESCR" Όνομα τύπου="System.String" />
</Αναγνωριστικά>
Κάπου κατά μήκος της γραμμής, Είχα καταφέρει να συγχέουμε τον εαυτό μου πάνω από την έννοια του <Αναγνωριστικά> και πρόσθεσε DESCR, ακόμα κι αν δεν είναι στην πραγματικότητα ένα αναγνωριστικό. Πήρα DESCR από τα αναγνωριστικά σύνολο και presto! Δούλεψε όλα.
Ελπίζω να σώσει κάποιον κάποια θλίψη 🙂