문제

In Visual Web Developer 2010, I'm trying to implement the extension to EntityDataSource described on this page that enables Insert() to be used as a method:

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

I get a compile error "CS0246: The type or namespace name 'EntityDataSource' could not be found (are you missing a using directive or an assembly reference?)"

I originally created the class as provided on this page: http://forums.asp.net/t/1621469.aspx/1

No difference between the 2 (except the 1st link's version actually gets VWD to recognize the EntityDataSourceExtentions class name as something - color codes it in blue-green.) I should be using .NET 4.0.

Addition: These are the contents of the class, saved as EntityDataSourceExtentions.cs in App_Code:

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);
        }
    }
}

This is the content of web.config, since that seems to play a role in adding different assemblies to the compile:

<?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>

Now that I'm looking at web.config... I noted on a few websites, that there was a difference between "System.Data.Entity" and "System.Web.Entity". Should there be a .Web.Entity assembly added to make this work? Anyone happen to know its tag?

도움이 되었습니까?

해결책

Apparently the verbiage I needed to know is "reference".

And the menu to deal with this in VWD is Website > Add Reference... followed by the .NET tab.

Gives me:

<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"/>

(And just to know, apparently the PublicKeyToken is not any sort of sensitive data.

Helpful info:

Adding assembly reference within web.config

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

And, finally, I added the EntityDataSourceExtentions.cs file back into the App_Code folder, and rebuilt the site, and I don't get the compile error anymore. (Funny that I should have to add in a reference to that assembly when I'm already using the datasource in the page successfully. Be blessed if I knew how it was all working.) So while I still don't know if EntityDataSource.Insert() will solve my design problem, I at least got past the initial, obnoxious compile error.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top