Mi ha causato un errore di BDC questa settimana che si è manifestata nell'interfaccia utente e nella 12 registro dell'alveare in fase di esecuzione.
Primo, Questa apparve nell'interfaccia utente:
Non riusciva a trovare campi per inserire tutti i valori dell'identificatore per eseguire correttamente una SpecificFinder MethodInstance con nome … Controllare che i parametri di input includano TypeDescriptor associati a ogni identificatore definito per questa entità.
Ecco una schermata:
Potuto anche causare questo messaggio a comparire nella 12 registro dell'alveare a sarà (usando il mio high-tech-don't-try-this-at-home brevettato "misteriosi Errori" Metodo.):
11/14/2007 09:24:41.27 w3wp.exe (0x080C) 0x0B8C dati di SharePoint Portal Server Business 6q4x alta eccezione in BusinessDataWebPart.OnPreRender: System. InvalidOperationException: Il valore dell'identificatore ”, di tipo ”, non è valido. Valore previsto identificatore di tipo 'System. String'. a Microsoft.Office.Server.ApplicationRegistry.MetadataModel.Entity.FindSpecific(Oggetto[] subIdentifierValues, LobSystemInstance lobSystemInstance) a Microsoft.SharePoint.Portal.WebControls.BdcClientUtil.FindEntity(Entità di entità, Oggetto[] userValues, LobSystemInstance lobSystemInstance) a Microsoft.SharePoint.Portal.WebControls.BusinessDataItemBuilder.GetEntityInstance(Vista desiredView) a Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.GetEntityInstance() a Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.SetDataSourceProperties()
Ho cercato in giro e trovato qualche porta nella Forum MSDN, ma non erano abbastanza per me per capire quello che stavo facendo sbagliato. Ho guardato un webcast di Ted Pattison che il mio azienda ha squirreled lontano su un server ed è venuto a realizzare il mio problema.
Nel mio ADF, Connettersi a un database SQL come illustrato:
<Proprietà Nome="RdbCommandText" Tipo="System. String">
<![CDATA[
SELEZIONARE SETID, CARRIER_ID, EFFDT, DESCR, EFF_STATUS, TAXPAYER_ID, NETWORK_ID, FRT_FORWARD_FLG, ALT_NAME1, ALT_NAME2, LANGUAGE_CD,
PAESE, INDIRIZZO1, INDIRIZZO2, INDIRIZZO3, INDIRIZZO4, CITTÀ, NUM1, NUM2, HOUSE_TYPE, ADDR_FIELD1, ADDR_FIELD2, ADDR_FIELD3,
CONTEA DI, STATO, POSTALE, GEO_CODE, IN_CITY_LIMIT, COUNTRY_CODE, TELEFONO, ESTENSIONE, FAX, LAST_EXP_CHK_DTTM, FREIGHT_VENDOR,
INTERLINK_DLL, TMS_EXCLUDE_FLG da dbo.PS_CARRIER_ID_VW con (NOLOCK)
DOVE
(SETID <> 'PARTI') e
(inferiore(CARRIER_ID) >= bassa(@MinId)) e
(inferiore(CARRIER_ID) <= bassa(@ MaxId)) e
(inferiore(DESCR) COME inferiore(@InputDescr))
]]>
</Proprietà>
Mi è stato fornito che SQL da una persona DBA e sono fatto capire che è un speciale vista che hanno creato solo per me. La chiave univoca c'è CARRIER_ID.
Ecco il bug che introdotto:
<Identificatori>
<Identificatore Nome="CARRIER_ID" TypeName="System. String" />
<Identificatore Nome="DESCR" TypeName="System. String" />
</Identificatori>
Da qualche parte lungo la linea, Ero riuscito a confondere me stesso sopra il significato del <Identificatori> e aggiunto DESCR, anche se non è in realtà un identificatore. Ho preso DESCR fuori il set di identificatori e presto! E tutto ha funzionato.
Spero che questo salvi qualcuno un po 'di dolore 🙂