Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用实体框架作为Web部件';Sharepoint 2010中的s数据源_C#_.net_Entity Framework_Web Parts_Sharepoint 2010 - Fatal编程技术网

C# 使用实体框架作为Web部件';Sharepoint 2010中的s数据源

C# 使用实体框架作为Web部件';Sharepoint 2010中的s数据源,c#,.net,entity-framework,web-parts,sharepoint-2010,C#,.net,Entity Framework,Web Parts,Sharepoint 2010,我有一个非常简单的web部件。我有一个单一的网格视图,我正在使用linq填充到实体(或者至少这是我想要做的)。实体数据模型.edmx文件与web部件位于同一个项目中,并且看起来一切正常。调试项目时,它在实体模型构造函数上爆炸,并显示错误消息: 指定的命名连接无效 在配置中找不到, 不打算与 EntityClient提供程序,或无效 App.Config中我的连接字符串如下所示: <add name="MyDBEntities" connectionString="metadata=res:

我有一个非常简单的web部件。我有一个单一的网格视图,我正在使用linq填充到实体(或者至少这是我想要做的)。实体数据模型.edmx文件与web部件位于同一个项目中,并且看起来一切正常。调试项目时,它在实体模型构造函数上爆炸,并显示错误消息:

指定的命名连接无效 在配置中找不到, 不打算与 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" />

所以,从我在别处读到的内容来看,我的问题是SharePoint无法看到我的连接字符串。这意味着,当我运行/调试项目时,项目中的App.Config实际上没有加载到SharePoint中。如果是这样的话,那么我如何在VisualStudio2010中设置我的项目,以确保SharePoint除了主SharePoint配置文件之外还获取App.Config。如果我必须手动复制连接字符串,是否有这样做的“最佳实践”程序?与实体框架相结合的SharePoint Web部件是否还没有准备好进入黄金时段?

Visual Studio 2010的SharePoint工具已经推出,并将自动在Web.config中创建许多必要的条目。不幸的是,他们不会为您创建实体框架条目。为此,您需要为您的web部件项目编写一个功能接收器,用于添加EF连接字符串

SharePoint API有一个名为的对象。您应该编写一个FeatureActivated事件,使用该类对web.config进行修改,然后编写一个FeatureDeactivating事件,删除修改


-Greg

我在SharePoint 2010 Web部件中遇到了同样的异常情况,我终于让它正常工作了,但在这一过程中我学到了两件重要的事情

  • 您必须使用场解决方案,而不是沙箱解决方案。原因是,沙盒解决方案无法访问网站集之外的数据。一个更有意义的异常可能有助于快速解决这个问题,但我收到的异常如上所述

  • 连接字符串必须位于安装web部件的web应用程序的web.config中。安装web部件时不会自动添加它,因此您必须按照上面Greg列出的方式更新web.config,或者手动编辑它。它位于C:\inetpub\wwwroot\wss\VirtualDirectories{WebApplicationName}\web.config中

  • :)非常感谢,你救了我把东西搬出EF
    public MyDBEntities() : base("name=MyDBEntities", "MyDBEntities")