Am cauzat de o eroare de BDC această săptămână care a manifestat pe interfaţa cu utilizatorul şi în 12 jurnal de stup în timpul rulării.
Prima, Aceasta a apărut în interfaţa cu utilizatorul:
Imposibil de găsit câmpuri pentru a insera toate valorile identificatorilor pentru a executa corect o SpecificFinder MethodInstance cu numele … Asigure parametrii de intrare au TypeDescriptor asociați cu fiecare identificator definit pentru această entitate.
Aici este un ecran shot:
S-ar putea provoca, de asemenea, acest mesaj pentru a apărea în 12 stup log la va (ajutorul meu brevetat high-tech-don't-try-this-at-home "misterioase erori" metoda):
11/14/2007 09:24:41.27 w3wp.exe (0x080C) 0x0B8C date de afaceri SharePoint Portal Server 6q4x mare excepţie în BusinessDataWebPart.OnPreRender: System.InvalidOperationException: Valoarea de identificator ”, de tip ”, nu este valid. Aşteptat valoare identificator de tip 'System.String'. la Microsoft.Office.Server.ApplicationRegistry.MetadataModel.Entity.FindSpecific(Obiect[] subIdentifierValues, LobSystemInstance lobSystemInstance) la Microsoft.SharePoint.Portal.WebControls.BdcClientUtil.FindEntity(Entitate entitate, Obiect[] userValues, LobSystemInstance lobSystemInstance) la Microsoft.SharePoint.Portal.WebControls.BusinessDataItemBuilder.GetEntityInstance(Vezi desiredView) la Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.GetEntityInstance() la Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.SetDataSourceProperties()
Am căutat în jurul şi a găsit unele conduce în MSDN forum, dar nu au fost suficient pentru mine să înţeleagă ceea ce am făcut greşit. Am urmarit o prezentare Web de Ted Pattison care meu Compania a squirreled deplasare pe un server şi a venit să realizeze problema mea.
În mea ADF, Eu sunt conectarea la o bază de date SQL, aşa cum se Arată:
<Proprietate nume="RdbCommandText" Tip="System.string">
<![CDATA[
SELECTAŢI SETID, CARRIER_ID, EFFDT, DESCR, EFF_STATUS, TAXPAYER_ID, NETWORK_ID, FRT_FORWARD_FLG, ALT_NAME1, ALT_NAME2, LANGUAGE_CD,
TARA, ADDRESS1, ADDRESS2, ADDRESS3, ADDRESS4, CITY, NUM1, NUM2, HOUSE_TYPE, ADDR_FIELD1, ADDR_FIELD2, ADDR_FIELD3,
COMITATUL, STAT, POŞTALE, GEO_CODE, IN_CITY_LIMIT, COUNTRY_CODE, TELEFON, PRELUNGIRE, FAX, LAST_EXP_CHK_DTTM, FREIGHT_VENDOR,
INTERLINK_DLL, TMS_EXCLUDE_FLG de dbo.PS_CARRIER_ID_VW cu (nolock)
ÎN CAZUL ÎN CARE
(SETID <> "COTA") şi
(Inferioară(CARRIER_ID) >= mai mici(@MinId)) şi
(Inferioară(CARRIER_ID) <= mai mici(@MaxId)) şi
(Inferioară(DESCR) CA mai mici(@InputDescr))
]]>
</Proprietate>
I-a fost astfel că SQL de la un DBA persoana si am dat de înţeles că este o speciale Vezi au creat doar pentru mine. Cheie unic este CARRIER_ID.
Aici este bug-ul, am introdus:
<Identificatori>
<Identificator nume="CARRIER_ID" TypeName="System.string" />
<Identificator nume="DESCR" TypeName="System.string" />
</Identificatori>
Undeva de-a lungul liniei, Am reuşit să mă confunde în sensul <Identificatori> şi a adăugat DESCR, chiar dacă nu este de fapt un identificator. Am luat DESCR din identificatori set şi presto! Totul a lucrat.
I hope this saves someone some grief 🙂