代码之家  ›  专栏  ›  技术社区  ›  Ryan Hayes

在SharePoint2010中将实体框架用作Web部件的数据源

  •  5
  • Ryan Hayes  · 技术社区  · 14 年前

    我有一个非常简单的Web部件。我有一个单一的网格视图,我正在使用linq to实体填充它(或者至少我想这样做)。实体数据模型.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" />
    

    施工单位:

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

    所以,从我在其他地方读到的内容来看,我的问题是SharePoint看不到我的连接字符串。这意味着,当我运行/调试项目时,我项目中的app.config实际上没有加载到SharePoint中。如果是这样,那么我将如何在Visual Studio 2010中设置项目,以确保SharePoint除了主SharePoint配置文件外,还可以获取app.config。如果必须手动复制连接字符串,是否有“最佳实践”过程?SharePoint Web部件与实体框架的组合是否还没有准备好迎接黄金时段?

    2 回复  |  直到 14 年前
        1
  •  6
  •   Greg Enslow    14 年前

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

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

    -格雷戈

        2
  •  1
  •   Appel21    11 年前

    我在一个SharePoint2010 Web部件中遇到了同样的例外,我终于让它正常工作了,但我在这一过程中学到了两件重要的事情。

    1. 您必须使用服务器场解决方案而不是沙盒解决方案。原因是,沙盒解决方案无法访问网站集外部的数据。一个更有意义的例外会有助于快速解决这个问题,但是我收到了如上所述的例外。

    2. 连接字符串必须位于安装Web部件的Web应用程序的web.config中。它不会在安装Web部件时自动添加,因此必须按照上面greg列出的方式更新web.config,或者手动编辑它。它位于c:\inetpub\wwwroot\wss\virtualdirectories webapplicationname \web.config中