Ошибка при выполнении Entity.FindSpecific в модели BDC - PullRequest
1 голос
/ 15 августа 2011

Я борюсь с моей первой моделью BDC в Sharepoint 2010. Я создал очень простую модель с одним объектом. Я пытаюсь найти конкретную запись, выполнив:

    private IEntityInstance GetBdcEntityInstance(string nr, string entityName)
    {
        Identity id = new Identity(nr);
        IEntity entity = mCatalog.GetEntity(Constants.BdcNavEntityNameSpace, pEntityName);
        IEntityInstance instance = entity.FindSpecific(id, navLobSystemInstance);
        return instance;
    }

navLobSystemInstance инициализируется с:

mNavLobSystemInstance = mCatalog.GetLobSystem("NAVViews").GetLobSystemInstances()["NAVViews"];

Этот метод завершается с ошибкой в ​​entity.FindSpecific со следующей ошибкой:

Эта сущность (внешний тип контента) не принадлежит Предоставлен LobSystemInstance (Экземпляр внешней системы). Имя параметра: lobSystemInstance "

Я думаю, что это пытается сказать мне, что Entity не является частью системы LOB, которую я определил, поэтому я, должно быть, испортил XML модели BDC, вероятно. Я также новичок в этом конкретном формате джунглей XML, и я попробовал несколько вещей, но я просто недостаточно хорошо понимаю это, чтобы увидеть какие-либо «очевидные» ошибки. У кого-нибудь есть идея?

Вот полный XML-код модели BDC:

<?xml version="1.0" encoding="utf-8"?>
<Model xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/windows/2007/BusinessDataCatalog" Name="NAVViews">
  <Properties>
    <Property Name="ConnectionString" Type="System.String"></Property>
  </Properties>
  <LobSystems>
    <LobSystem Name="NAV" Type="DotNetAssembly">
      <LobSystemInstances>
        <LobSystemInstance Name="NAVViews" />
      </LobSystemInstances>
      <Entities>
        <Entity Name="BdcCustomer" Namespace="BdcNAVModel.NAVViews" Version="1.0.0.1">
          <Properties>
            <Property Name="Class" Type="System.String">BdcNAVModel.NAVViews.BdcCustomerService, NAVViews</Property>
          </Properties>
          <Identifiers>
            <Identifier Name="No" TypeName="System.String" />
          </Identifiers>
          <Methods>
            <Method Name="ReadItem">
              <Parameters>
                <Parameter Name="returnParameter" Direction="Return">
                  <TypeDescriptor Name="BdcCustomer" TypeName="BdcNAVModel.NAVViews.BdcCustomer, NAVViews" IsCollection="false">
                    <TypeDescriptors>
                      <TypeDescriptor Name="No" TypeName="System.String" />
                      <TypeDescriptor Name="Name" TypeName="System.String" />
                      <TypeDescriptor Name="Name2" TypeName="System.String" />
                      <TypeDescriptor Name="Address" TypeName="System.String" />
                      <TypeDescriptor Name="Address2" TypeName="System.String" />
                      <TypeDescriptor Name="ZipCode" TypeName="System.String" UpdaterField="false" />
                      <TypeDescriptor Name="City" TypeName="System.String" />
                      <TypeDescriptor Name="CountryRegion" TypeName="System.String" />
                      <TypeDescriptor Name="PhoneNo" TypeName="System.String" />
                      <TypeDescriptor Name="SalesPersonCode" TypeName="System.String" />
                      <TypeDescriptor Name="CountryRegionCode" TypeName="System.String" />
                    </TypeDescriptors>
                    </TypeDescriptor>
                    </Parameter>
                <Parameter Name="CustomerNo" Direction="In">
                  <TypeDescriptor Name="CustomerNo" TypeName="System.String" /></Parameter>
              </Parameters>
              <MethodInstances>
                <MethodInstance Name="ReadItem" Type="SpecificFinder" ReturnParameterName="returnParameter" ReturnTypeDescriptorPath="BdcCustomer" />
              </MethodInstances></Method>
            <Method Name="ReadList">
              <Parameters>
                <Parameter Name="customerList" Direction="Return">
                  <TypeDescriptor Name="CustomerList" TypeName="System.Collections.Generic.IEnumerable`1[[BdcNAVModel.BdcCustomer, NAVViews]]" IsCollection="true">
                    <TypeDescriptors>
                      <TypeDescriptor Name="BdcCustomer" TypeName="BdcNAVModel.NAVViews.BdcCustomer, NAVViews" IsCollection="false">
                        <TypeDescriptors>
                          <TypeDescriptor Name="No" TypeName="System.String" />
                          <TypeDescriptor Name="Name" TypeName="System.String" />
                          <TypeDescriptor Name="Name2" TypeName="System.String" />
                          <TypeDescriptor Name="Address" TypeName="System.String" />
                          <TypeDescriptor Name="Address2" TypeName="System.String" />
                          <TypeDescriptor Name="ZipCode" TypeName="System.String" />
                          <TypeDescriptor Name="City" TypeName="System.String" />
                          <TypeDescriptor Name="CountryRegion" TypeName="System.String" />
                          <TypeDescriptor Name="PhoneNo" TypeName="System.String" />
                          <TypeDescriptor Name="SalesPersonCode" TypeName="System.String" />
                          <TypeDescriptor Name="CountryRegionCode" TypeName="System.String" /></TypeDescriptors></TypeDescriptor></TypeDescriptors>
                    </TypeDescriptor></Parameter>
              </Parameters>
              <MethodInstances>
                <MethodInstance Name="ReadList" Type="Finder" ReturnParameterName="customerList" ReturnTypeDescriptorPath="CustomerList" />
              </MethodInstances></Method>
          </Methods></Entity>
      </Entities>
    </LobSystem>
  </LobSystems>
</Model>

1 Ответ

0 голосов
/ 02 октября 2013

Имя LogSystemInstance, которое вы вводите (NAVViews), должно быть именем возвращаемого вами TypeDescriptor (BdcCustomer). Эти два должны соответствовать названию вашей сущности, которое, я полагаю, BdcCustomer. Поэтому попробуйте изменить эту строку:

<LobSystemInstance Name="NAVViews" />

В это:

<LobSystemInstance Name="BdcCustomer" />

Вы также можете взглянуть на эту модель xml , с которой я недавно работал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...