Partager via


Extrait de code : importer un modèle BDC dans le magasin de métadonnées

Dernière modification : jeudi 13 mai 2010

S’applique à : SharePoint Server 2010

L’exemple suivant montre comment importer un modèle BDC dans un catalogue de batteries de serveurs.

Conditions requises :

  • Microsoft SharePoint Server 2010 ou Microsoft SharePoint Foundation 2010.

  • Microsoft .NET Framework 3.5.

Pour utiliser cet exemple

  1. Démarrez Visual Studio et créez un projet d’application console C#. Sélectionnez .NET Framework 3.5 lors de la création du projet.

  2. Dans le menu Affichage, cliquez sur Pages des propriétés pour afficher les propriétés du projet.

  3. Dans l’onglet Version, pour la Plateforme cible, sélectionnez Tout processeur.

  4. Fermez la fenêtre des propriétés du projet.

  5. Dans l’Explorateur de solutions, sous Références, supprimez toutes les références du projet, à l’exception de System et System.Core.

  6. Ajoutez les références suivantes pour le projet :

    1. Microsoft.BusinessData

    2. Microsoft.SharePoint

    3. System.Web

  7. Remplacez le code dans Program.cs par le code listé à la fin de cette procédure.

  8. Enregistrez le projet.

  9. Remplacez les valeurs de strModelName et strXmlFile2Import par le nom et le chemin d’accès complet de votre fichier de modèle, respectivement.

  10. Remplacez la valeur de strSomeSite par l’URL d’un site dans votre batterie de serveurs.

  11. Compilez et exécutez le projet.

  12. Ouvrez Internet Explorer et accédez à l’administration centrale de la batterie de serveurs.

  13. Dans le navigateur, cliquez sur Gérer les applications de service.

  14. Cliquez sur Service BDC.

    Notes

    Business Data Connectivity Service est le nom par défaut du service BDC. Si l’administrateur a nommé le service BDC de façon différente, un autre nom apparaîtra dans la page Web Administration centrale.

    Le modèle qui vient d’être importé est affiché.

using System;
using System.IO;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Administration;
using Microsoft.SharePoint.BusinessData.Administration;
using Microsoft.SharePoint.BusinessData.Parser;
using Microsoft.SharePoint.BusinessData.SharedService;

namespace Microsoft.SDK.Sharepoint.Samples
{
    class Program
    {
        static void Main(string[] args)
        {
            # region declarations and initializations

            // The model name is used to compose its file name 
            // and also to check hits existence in the catalog.
            string strModelName = "testBCSimport";

            // The full path to the XML model to import.
            string strXmlFile2Import = @".\" + strModelName + ".xml";

            // A site in the farm is used as a reference point 
            // to the farm.
            string strSomeSite = "http://intranet.contoso.com/";

            // The model definition file is the XML data to import.
            string strXmlData2Import;

            // An array to gather the non-critical errors encountered 
            // during the import process.
            string[] strarrNoncriticalErrors;

            // Specify what to import: {"All", "InlineProxies", 
            // "LocalizedNames", "Model", "None", "Permissions", 
            // "Properties"}.
            PackageContents packageContentsImportFlags = 
                PackageContents.All;

            // Setting to use when obtaining resources to 
            // import the model.
            string strResourcesSettingId = "";

            // If blUpdateExistingModel is true, the model definition 
            // that was already in the database is updated 
            // to contain only the external content types 
            // in the given XML. 
            // This method throws an exception if the model 
            // is not in the database. 
            // If blUpdateExistingModel is false, the model is
            // created for the first time, 
            // and this method throws an exception if the 
            // model already exists in the database. 
            // When the model is being updated, the external 
            // content types that were previously in the model 
            // are not deleted. 
            //   The caller must clean them up separately.
            bool blUpdateExistingModel = false;

            // A GUID that is used to track this import process.
            Guid guidJobId = 
                new Guid("C6E88A92-31C2-4D02-9890-5DC2ADB36EA9");

            # endregion declarations and initializations

            # region import

            try
            {
                // Get the model.
                strXmlData2Import = File.ReadAllText(strXmlFile2Import);

                // Identify the farm using a site in the farm.
                using (SPSite site = new SPSite(strSomeSite))
                {
                    // Reference the farm to host the BCS definitions.
                    using (new Microsoft.SharePoint.SPServiceContextScope(
                        SPServiceContext.GetContext(site)))
                    {
                        // Reference the BDC service.
                        BdcService service = 
                            SPFarm.Local.Services.GetValue<BdcService>
                            (String.Empty);

                        // Get the catalog of the referenced BDC service.
                        AdministrationMetadataCatalog cat = 
                            service.GetAdministrationMetadataCatalog(
                            SPServiceContext.Current);

                        // Import the XML definition.
                        Model bcsadminModel = cat.ImportPackage(
                            strXmlData2Import,
                            out strarrNoncriticalErrors,
                            packageContentsImportFlags,
                            strResourcesSettingId,
                            blUpdateExistingModel,
                            guidJobId);

                        Console.Out.NewLine = "\n\r\n\r";
                        int iNumOfNoncriticalErrors = 
                            strarrNoncriticalErrors.Length;
                        if (iNumOfNoncriticalErrors > 0)
                        {
                            Console.WriteLine("Noncritical Errors");
                            for (int iCtr = 0; 
                                iCtr < iNumOfNoncriticalErrors; 
                                iCtr++)
                            {
                                Console.WriteLine(
                                    strarrNoncriticalErrors[iCtr]);
                            }
                        }
                        Console.WriteLine(
                            "Import completed successfully");
                        // Now go to the farm's central administration, 
                        // click Manage service applications,
                        // click Business Data Connectivity 
                        // (the name of the BDC service) 
                        // and enjoy the newly imported model.
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                Console.Read();
            }

            # endregion import
        }
    }
}

Voir aussi

Référence

PackageContents

BdcService

Services

AdministrationMetadataCatalog

GetAdministrationMetadataCatalog(SPServiceContext)

ImportPackage(String, [], PackageContents, String, Boolean, Guid)

Model