У меня есть очень простая веб-часть. У меня есть единственное представление сетки, которое я заполняю использование linq к объектам (или по крайней мере это - то, что я хочу сделать). Модель данных Объекта .edmx файл расположена в том же проекте как веб-часть, и все надеется быть в рабочем состоянии. Когда я отлаживаю проект, он аварийно завершается на конструкторе модели объекта с сообщением об ошибке:
Указанное именованное соединение или не найдено в конфигурации, не предназначенной, чтобы использоваться с поставщиком EntityClient, или не допустимое.
Моя строка подключения в Приложении. Конфигурация следующие:
<add name="MyDBEntities" connectionString="metadata=res://*/MyDBEntityModel.csdl|res://*/MyDBEntityModel.ssdl|res://*/MyDBEntityModel.msl;provider=System.Data.SqlClient;provider connection string="Data Source=MyServer;Initial Catalog=MyDB;Integrated Security=True;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
Конструктор:
public MyDBEntities() : base("name=MyDBEntities", "MyDBEntities")
Так, от того, что я считал в другом месте, моя проблема состоит в том, что SharePoint не видит мою строку подключения. Что означает, что Приложение. Конфигурация из моего проекта на самом деле не становится загруженной в SharePoint, когда я выполняю/отлаживаю проект. Если это так, затем как я действительно настраиваю свой проект в Visual Studio 2010, чтобы гарантировать, что SharePoint забирает Приложение. Конфигурация в дополнение к основному файлу конфигурации SharePoint. Если я должен вручную скопировать строку подключения, есть ли процедура "лучшей практики" того, чтобы сделать так? Веб-Части SharePoint объединены с Платформой Объекта, просто не готовой к прайм-тайму?
Инструменты SharePoint Tools для Visual Studio 2010 прошли долгий путь и автоматически вносят многие необходимые записи в web.config. К сожалению, они не будут делать записи Entity Framework за вас. Для этого вам нужно будет написать приемник функций для проекта веб-части, который добавит строку подключения EF.
В SharePoint API есть объект с именем SPWebConfigModification. Вы должны написать событие FeatureActivated, которое использует этот класс для внесения изменений в web.config, а затем событие FeatureDeactivating, которое удаляет модификацию.
-Greg