אני גרמתי שגיאת BDC השבוע זה בא לידי ביטוי בממשק המשתמש ואת 12 כוורת רישום בזמן ריצה.
הראשונה, זה הופיע בממשק המשתמש:
לא היתה אפשרות למצוא שדות כדי להוסיף את כל הערכים מזהה לבצע כהלכה SpecificFinder MethodInstance עם שם … להבטיח שפרמטרים של קלט יש TypeDescriptors הקשורים עם כל המזהה מוגדר עבור ישות זו.
הנה צילום מסך:
אני יכול לגרום גם הודעה זו תופיע 12 כוורת רישום-יהיה (שימוש high-tech-don't-try-this-at-home פטנט שלי "שגיאות מסתורי" שיטה):
11/14/2007 09:24:41.27 w3wp.exe (0x080C) 0SharePoint Portal Server נתונים עסקיים x0B8C 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, אבל הם לא היו מספיק בשבילי להבין מה אני עושה לא בסדר. ראיתי שידור אינטרנט על-ידי טד פטיסון . זה שלי החברה יש מוסתרת בשרת, הגיע כדי להבין את הבעיה שלי.
ב- ADF שלי, אני מתחבר מסד נתונים של SQL כמוצג:
<רכוש שם="RdbCommandText" סוג="System.String">
<![CDATA[
בחר SETID, CARRIER_ID, EFFDT, לתאר, EFF_STATUS, TAXPAYER_ID, NETWORK_ID, FRT_FORWARD_FLG, ALT_NAME1, ALT_NAME2, LANGUAGE_CD,
מדינה, כתובת1, ADDRESS2, 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)) ו
(נמוך יותר(לתאר) כמו התחתון(@InputDescr))
]]>
</רכוש>
אני היה סיפק את SQL מאדם DBA, שאני נותן להבין כי זה מיוחד תצוגה שהם יצרו רק בשבילי. המפתח הייחודי שם הוא CARRIER_ID.
כאן הוא באג הצגתי:
<מזהי>
<המזהה שם="CARRIER_ID" TypeName="System.String" />
<המזהה שם="לתאר" TypeName="System.String" />
</מזהי>
איפשהו לאורך הקו, אני הצליח לבלבל את עצמי על המשמעות של <מזהי> והוסיף לתאר למרות שזה לא באמת מזהה. שהוצאתי מתארת מזהי קבוצה, ופרסטו! הכל עבד.
אני מקווה שזה יחסוך למישהו קצת צער 🙂