Использование Entity Framework в качестве источника данных веб-части в Sharepoint 2010 - PullRequest
5 голосов
/ 12 мая 2010

У меня очень простая веб-часть. У меня есть одно сеточное представление, которое я заполняю, используя linq для сущностей (или, по крайней мере, это то, что я хочу сделать). Файл Entity Data Model .edmx находится в том же проекте, что и веб-часть, и все выглядит в рабочем состоянии. Когда я отлаживаю проект, он взрывается на конструкторе модели сущности с сообщением об ошибке:

указанное именованное соединение либо не найден в конфигурации, не предназначен для использования с Поставщик EntityClient или недействительный.

Моя строка подключения в App.Config выглядит следующим образом:

<add name="MyDBEntities" connectionString="metadata=res://*/MyDBEntityModel.csdl|res://*/MyDBEntityModel.ssdl|res://*/MyDBEntityModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=MyServer;Initial Catalog=MyDB;Integrated Security=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />

Конструктор:

public MyDBEntities() : base("name=MyDBEntities", "MyDBEntities")

Итак, из того, что я читал в другом месте, моя проблема в том, что SharePoint не видит мою строку подключения. Это означает, что App.Config из моего проекта фактически не загружается в SharePoint, когда я запускаю / отлаживаю проект. Если это так, то как мне настроить мой проект в Visual Studio 2010, чтобы убедиться, что SharePoint выбирает App.Config в дополнение к основному файлу конфигурации SharePoint. Если мне нужно вручную скопировать строку подключения, есть ли для этого «наилучшая практика»? Веб-части SharePoint в сочетании с Entity Framework просто не готовы к прайм-тайм?

Ответы [ 2 ]

6 голосов
/ 14 мая 2010

Инструменты SharePoint для Visual Studio 2010 прошли долгий путь и автоматически внесут многие необходимые записи в файл web.config. К сожалению, они не будут делать записи Entity Framework для вас. Для этого вам нужно написать приемник функций для вашего проекта веб-части, который добавляет строку подключения EF.

API SharePoint имеет объект с именем SPWebConfigModification . Вы должны написать событие FeatureActivation, которое использует этот класс для внесения изменений в web.config, а затем событие FeatureDeactivating, которое удаляет изменение.

1007 * Грег *

1 голос
/ 30 августа 2013

Я боролся с тем же исключением в веб-части SharePoint 2010, и наконец-то он заработал, но вот две важные вещи, которые я узнал на этом пути.

  1. Вы должны использовать решение фермы, а не решение для песочницы. Причина этого заключается в том, что решения для песочницы не имеют доступа к данным за пределами семейства сайтов. Для более быстрого решения этого вопроса было бы полезно более значимое исключение, но я получал исключение, как указано выше.

  2. Строка подключения должна быть в файле web.config веб-приложения, в котором вы устанавливаете веб-часть. Он не добавляется автоматически при установке веб-части, поэтому необходимо либо обновить файл web.config, как указано выше в списке Грега, либо отредактировать его вручную. Он находится в C: \ inetpub \ wwwroot \ wss \ VirtualDirectories {WebApplicationName} \ web.config

...