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:
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"" providerName="System.Data.EntityClient" />
<add name="TestConn" connectionString="removed=true;multipleactiveresultsets=True;App=EntityFramework"" 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.