0

在 Visual Web Developer 2010 中,我正在尝试实现此页面上描述的 EntityDataSource 的扩展,使 Insert() 可以用作方法:

http://social.msdn.microsoft.com/forums/en-US/adodotnetentityframework/thread/d8a3ecd8-55dd-45ad-8175-d7ce912f46c2/

我收到编译错误“CS0246:找不到类型或命名空间名称 'EntityDataSource'(您是否缺少 using 指令或程序集引用?)”

我最初创建了这个页面上提供的类: http ://forums.asp.net/t/1621469.aspx/1

2 之间没有区别(除了第一个链接的版本实际上让 VWD 将 EntityDataSourceExtentions 类名识别为某种东西 - 将其颜色编码为蓝绿色。)我应该使用 .NET 4.0。

补充: 这些是类的内容,在App_Code中保存为EntityDataSourceExtentions.cs:

using System.Collections.Specialized;

namespace System.Web.UI.WebControls
{
    public static class EntityDataSourceExtentions
    {
        private static bool DefaultOperationCallback(int affectedRows, Exception ex)
        {
                return false;
        }
        public static void Insert(this EntityDataSource dataSource)
        {
                (dataSource as IDataSource).GetView(string.Empty).Insert(new OrderedDictionary(),DefaultOperationCallback);
        }
    }
}

这是 web.config 的内容,因为这似乎在将不同的程序集添加到编译中起作用:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <connectionStrings>
    <add name="CustomConn" connectionString="Removed=true;" providerName="System.Data.SqlClient" />
    <add name="CustomEntities" connectionString="removed=true;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
    <add name="TestConn" connectionString="removed=true;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>
  <system.web>
    <compilation debug="true" targetFramework="4.0">
      <assemblies>
        <add assembly="System.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=X1" />
        <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=X2" />
        <add assembly="System.Data.Entity.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=X3" />
      </assemblies>
      <buildProviders>
        <add extension=".edmx" type="System.Data.Entity.Design.AspNet.EntityDesignerBuildProvider" />
      </buildProviders>
    </compilation>
    <customErrors mode="Off" />
    <pages>
      <controls>
        <add tagPrefix="custom" tagName="SidebarAds" src="~/_user_controls/SidebarAds.ascx" />
        <add tagPrefix="custom" tagName="ComingSoon" src="~/_user_controls/ComingSoon.ascx" />
        <add tagPrefix="custom" tagName="StateSelect" src="~/_user_controls/StateSelect.ascx" />
      </controls>
    </pages>
  </system.web>
</configuration>

现在我正在查看 web.config ......我在一些网站上注意到,“System.Data.Entity”和“System.Web.Entity”之间存在差异。是否应该添加一个 .Web.Entity 程序集来完成这项工作?有人碰巧知道它的标签吗?

4

1 回答 1

0

显然我需要知道的措辞是“参考”。

在 VWD 中处理此问题的菜单是网站 > 添加参考...,然后是 .NET 选项卡。

给我:

<add assembly="System.Web.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Web.Entity.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

(只是要知道,显然 PublicKeyToken 不是任何类型的敏感数据。

有用的信息:

在 web.config 中添加程序集引用

http://en.wikipedia.org/wiki/.NET_assembly

最后,我将 EntityDataSourceExtentions.cs 文件重新添加到 App_Code 文件夹中,并重建了站点,并且不再出现编译错误。(有趣的是,当我已经成功使用页面中的数据源时,我应该添加对该程序集的引用。如果我知道它是如何工作的,那将是幸运的。)所以虽然我仍然不知道是否 EntityDataSource。 Insert() 将解决我的设计问题,我至少克服了最初的、令人讨厌的编译错误。

于 2013-05-15T18:08:11.587 回答