EntityDataSourceDesigner.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / ndp / fx / src / DataWebControlsDesign / System / Data / WebControls / Design / EntityDataSourceDesigner.cs / 1 / EntityDataSourceDesigner.cs

                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
// 
// @owner       [....]
// @backupOwner [....] 
//----------------------------------------------------------------------------- 

using System.ComponentModel; 
using System.ComponentModel.Design;
using System.Drawing.Design;
using System.Web.UI.WebControls;
using System.Web.UI.Design; 
using System.Windows.Forms;
using System.Web.UI.Design.WebControls.Util; 
 
namespace System.Web.UI.Design.WebControls
{ 
    public class EntityDataSourceDesigner : DataSourceDesigner
    {
        private EntityDataSourceDesignerHelper _helper;
 
        public override void Initialize(IComponent component)
        { 
            base.Initialize(component); 
            _helper = new EntityDataSourceDesignerHelper(component as EntityDataSource, true /*interactiveMode*/);
            _helper.AddSystemWebEntityReference(); 
        }

        // Whether or not the EntityDataSource can be configured. Currently we have no conditions where you can't at least attempt to
        // configure it. If there is no metadata available, an error may occur, but you can still try to configure the control. 
        public override bool CanConfigure
        { 
            get 
            {
                return true; 
            }
        }

        public override bool CanRefreshSchema 
        {
            get 
            { 
                // Minimum properties required for schema are ConnectionString and DefaultContainerName, plus EntitySetName or CommandText
                return (!String.IsNullOrEmpty(_helper.ConnectionString) && !String.IsNullOrEmpty(_helper.DefaultContainerName)) && 
                    (!String.IsNullOrEmpty(_helper.EntitySetName) || !String.IsNullOrEmpty(_helper.CommandText));
            }
        }
 
        public override void Configure()
        { 
            InvokeTransactedChange(Component, 
                new TransactedChangeCallback(ConfigureDataSourceChangeCallback),
                null, Strings.WizardTransactionDescription); 
        }

        private bool ConfigureDataSourceChangeCallback(object context)
        { 
            try
            { 
                SuppressDataSourceEvents(); 

                IServiceProvider serviceProvider = Component.Site as IServiceProvider; 
                EntityDataSourceWizardForm form = new EntityDataSourceWizardForm(serviceProvider, _helper.LoadEntityDataSourceState(), this);
                DialogResult result = UIHelper.ShowDialog(serviceProvider, form);
                if (result == DialogResult.OK)
                { 
                    _helper.SaveEntityDataSourceProperties(form.EntityDataSourceState);
 
                    OnDataSourceChanged(EventArgs.Empty); 
                    RefreshSchema(true);
                    return true; 
                }
                else
                {
                    return false; 
                }
            } 
            finally 
            {
                ResumeDataSourceEvents(); 
            }
        }

        #region Design-time Schema Support 
        public override void RefreshSchema(bool preferSilent)
        { 
            try 
            {
                SuppressDataSourceEvents(); 
                _helper.RefreshSchema(preferSilent);
            }
            finally
            { 
                ResumeDataSourceEvents();
            } 
        } 

        public override DesignerDataSourceView GetView(string viewName) 
        {
            return _helper.GetView(viewName);
        }
 
        public override string[] GetViewNames()
        { 
            return _helper.GetViewNames(); 
        }
 
        internal void FireOnDataSourceChanged(EventArgs e)
        {
            // Clear metadata first because anything we have cached is now invalid since a property has changed
            _helper.ClearMetadata(); 
            OnDataSourceChanged(e);
        } 
 
        internal void FireOnSchemaRefreshed(EventArgs e)
        { 
            OnSchemaRefreshed(e);
        }

        internal bool InternalViewSchemasEquivalent(IDataSourceViewSchema viewSchema1, IDataSourceViewSchema viewSchema2) 
        {
            return ViewSchemasEquivalent(viewSchema1, viewSchema2); 
        } 

        internal virtual object LoadFromDesignerState(string key) 
        {
            return DesignerState[key];
        }
 
        internal void SaveDesignerState(string key, object value)
        { 
            DesignerState[key] = value; 
        }
        #endregion 

        #region Overridden control properties for providing editors and dropdowns in property grid
        [
        DefaultValue(""), 
        Category("Data"),
        ResourceDescription(WebControlsRes.PropertyDescription_DefaultContainerName), 
        TypeConverter(typeof(EntityDataSourceContainerNameConverter)), 
        ]
        public string DefaultContainerName 
        {
            get
            {
                return _helper.DefaultContainerName; 
            }
            set 
            { 
                _helper.DefaultContainerName = value;
            } 
        }


        [ 
        DefaultValue(""),
        Category("Data"), 
        ResourceDescription(WebControlsRes.PropertyDescription_EntitySetName), 
        TypeConverter(typeof(EntityDataSourceEntitySetNameConverter)),
        ] 
        public string EntitySetName
        {
            get
            { 
                return _helper.EntitySetName;
            } 
            set 
            {
                _helper.EntitySetName = value; 
            }
        }

        [ 
        DefaultValue(""),
        Category("Data"), 
        ResourceDescription(WebControlsRes.PropertyDescription_EntityTypeFilter), 
        TypeConverter(typeof(EntityDataSourceEntityTypeFilterConverter)),
        ] 
        public string EntityTypeFilter
        {
            get
            { 
                return _helper.EntityTypeFilter;
            } 
            set 
            {
                _helper.EntityTypeFilter = value; 
            }
        }

        [ 
        Category("Data"),
        ResourceDescription(WebControlsRes.PropertyDescription_CommandText), 
        DefaultValue(null), 
        Editor(typeof(EntityDataSourceStatementEditor), typeof(UITypeEditor)),
        MergableProperty(false), 
        ]
        public string CommandText
        {
            get 
            {
                return _helper.CommandText; 
            } 
            set
            { 
                _helper.CommandText = value;
            }
        }
 
        [
        DefaultValue(""), 
        Category("Data"), 
        ResourceDescription(WebControlsRes.PropertyDescription_ConnectionString)
        ] 
        public string ConnectionString
        {
            get
            { 
                return _helper.ConnectionString;
            } 
            set 
            {
                _helper.ConnectionString = value; 
            }
        }

        [ 
        Category("Data"),
        ResourceDescription(WebControlsRes.PropertyDescription_OrderBy), 
        DefaultValue(null), 
        Editor(typeof(EntityDataSourceStatementEditor), typeof(UITypeEditor)),
        MergableProperty(false), 
        ]
        public string OrderBy
        {
            get 
            {
                return _helper.OrderBy; 
            } 
            set
            { 
                _helper.OrderBy = value;
            }
        }
 
        [
        Category("Data"), 
        ResourceDescription(WebControlsRes.PropertyDescription_Select), 
        DefaultValue(""),
        Editor(typeof(EntityDataSourceStatementEditor), typeof(UITypeEditor)), 
        MergableProperty(false),
        ]
        public string Select
        { 
            get
            { 
                return _helper.Select; 
            }
            set 
            {
                _helper.Select = value;
            }
        } 

        [ 
        Category("Data"), 
        ResourceDescription(WebControlsRes.PropertyDescription_Where),
        DefaultValue(null), 
        Editor(typeof(EntityDataSourceStatementEditor), typeof(UITypeEditor)),
        MergableProperty(false),
        ]
        public string Where 
        {
            get 
            { 
                return _helper.Where;
            } 
            set
            {
                _helper.Where = value;
            } 
        }
        #endregion 
 
        #region Helper methods to manage properties and parameters in the statement editor
        internal bool AutoGenerateOrderByClause 
        {
            get
            {
                return _helper.AutoGenerateOrderByClause; 
            }
        } 
 
        internal bool AutoGenerateWhereClause
        { 
            get
            {
                return _helper.AutoGenerateWhereClause;
            } 
        }
 
        internal ParameterCollection CloneCommandParameters() 
        {
            return CloneParameterCollection(_helper.CommandParameters); 
        }

        internal ParameterCollection CloneOrderByParameters()
        { 
            return CloneParameterCollection(_helper.OrderByParameters);
        } 
 
        internal ParameterCollection CloneSelectParameters()
        { 
            return CloneParameterCollection(_helper.SelectParameters);
        }

        internal ParameterCollection CloneWhereParameters() 
        {
            return CloneParameterCollection(_helper.WhereParameters); 
        } 

        private ParameterCollection CloneParameterCollection(ParameterCollection original) 
        {
            ParameterCollection clones = new ParameterCollection();
            CloneParameters(original, clones);
            return clones; 
        }
 
        internal void CloneParameters(ParameterCollection originalParameters, ParameterCollection newParameters) 
        {
            foreach (ICloneable parameter in originalParameters) 
            {
                Parameter clone = (Parameter)parameter.Clone();
                RegisterClone(parameter, clone);
                newParameters.Add(clone); 
            }
        } 
 
        internal void SetCommandParameterContents(ParameterCollection newParams)
        { 
            SetParameters(_helper.CommandParameters, newParams);
        }

        internal void SetOrderByParameterContents(ParameterCollection newParams) 
        {
            SetParameters(_helper.OrderByParameters, newParams); 
        } 

        internal void SetSelectParameterContents(ParameterCollection newParams) 
        {
            SetParameters(_helper.SelectParameters, newParams);
        }
 
        internal void SetWhereParameterContents(ParameterCollection newParams)
        { 
            SetParameters(_helper.WhereParameters, newParams); 
        }
 
        private void SetParameters(ParameterCollection original, ParameterCollection newParams)
        {
            original.Clear();
            foreach (Parameter parameter in newParams) 
            {
                original.Add(parameter); 
            } 
        }
        #endregion 

        protected override void PreFilterProperties(System.Collections.IDictionary properties)
        {
            base.PreFilterProperties(properties); 

            // Properties that are overridden in the designer because they have custom editors or converters 
            Type designerType = GetType(); 
            properties["ConnectionString"] = TypeDescriptor.CreateProperty(designerType, "ConnectionString", typeof(string));
            properties["DefaultContainerName"] = TypeDescriptor.CreateProperty(designerType, "DefaultContainerName", typeof(string)); 
            properties["EntitySetName"] = TypeDescriptor.CreateProperty(designerType, "EntitySetName", typeof(string));
            properties["EntityTypeFilter"] = TypeDescriptor.CreateProperty(designerType, "EntityTypeFilter", typeof(string));
            properties["CommandText"] = TypeDescriptor.CreateProperty(designerType, "CommandText", typeof(string));
            properties["OrderBy"] = TypeDescriptor.CreateProperty(designerType, "OrderBy", typeof(string)); 
            properties["Select"] = TypeDescriptor.CreateProperty(designerType, "Select", typeof(string));
            properties["Where"] = TypeDescriptor.CreateProperty(designerType, "Where", typeof(string)); 
 
            // Properties that should be browsable in intellisense, but not visible in the designer property grid
            properties.Remove("ContextType"); 
        }

        internal EntityDataSourceDesignerHelper Helper
        { 
            get
            { 
                return _helper; 
            }
        } 

    }
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
// 
// @owner       [....]
// @backupOwner [....] 
//----------------------------------------------------------------------------- 

using System.ComponentModel; 
using System.ComponentModel.Design;
using System.Drawing.Design;
using System.Web.UI.WebControls;
using System.Web.UI.Design; 
using System.Windows.Forms;
using System.Web.UI.Design.WebControls.Util; 
 
namespace System.Web.UI.Design.WebControls
{ 
    public class EntityDataSourceDesigner : DataSourceDesigner
    {
        private EntityDataSourceDesignerHelper _helper;
 
        public override void Initialize(IComponent component)
        { 
            base.Initialize(component); 
            _helper = new EntityDataSourceDesignerHelper(component as EntityDataSource, true /*interactiveMode*/);
            _helper.AddSystemWebEntityReference(); 
        }

        // Whether or not the EntityDataSource can be configured. Currently we have no conditions where you can't at least attempt to
        // configure it. If there is no metadata available, an error may occur, but you can still try to configure the control. 
        public override bool CanConfigure
        { 
            get 
            {
                return true; 
            }
        }

        public override bool CanRefreshSchema 
        {
            get 
            { 
                // Minimum properties required for schema are ConnectionString and DefaultContainerName, plus EntitySetName or CommandText
                return (!String.IsNullOrEmpty(_helper.ConnectionString) && !String.IsNullOrEmpty(_helper.DefaultContainerName)) && 
                    (!String.IsNullOrEmpty(_helper.EntitySetName) || !String.IsNullOrEmpty(_helper.CommandText));
            }
        }
 
        public override void Configure()
        { 
            InvokeTransactedChange(Component, 
                new TransactedChangeCallback(ConfigureDataSourceChangeCallback),
                null, Strings.WizardTransactionDescription); 
        }

        private bool ConfigureDataSourceChangeCallback(object context)
        { 
            try
            { 
                SuppressDataSourceEvents(); 

                IServiceProvider serviceProvider = Component.Site as IServiceProvider; 
                EntityDataSourceWizardForm form = new EntityDataSourceWizardForm(serviceProvider, _helper.LoadEntityDataSourceState(), this);
                DialogResult result = UIHelper.ShowDialog(serviceProvider, form);
                if (result == DialogResult.OK)
                { 
                    _helper.SaveEntityDataSourceProperties(form.EntityDataSourceState);
 
                    OnDataSourceChanged(EventArgs.Empty); 
                    RefreshSchema(true);
                    return true; 
                }
                else
                {
                    return false; 
                }
            } 
            finally 
            {
                ResumeDataSourceEvents(); 
            }
        }

        #region Design-time Schema Support 
        public override void RefreshSchema(bool preferSilent)
        { 
            try 
            {
                SuppressDataSourceEvents(); 
                _helper.RefreshSchema(preferSilent);
            }
            finally
            { 
                ResumeDataSourceEvents();
            } 
        } 

        public override DesignerDataSourceView GetView(string viewName) 
        {
            return _helper.GetView(viewName);
        }
 
        public override string[] GetViewNames()
        { 
            return _helper.GetViewNames(); 
        }
 
        internal void FireOnDataSourceChanged(EventArgs e)
        {
            // Clear metadata first because anything we have cached is now invalid since a property has changed
            _helper.ClearMetadata(); 
            OnDataSourceChanged(e);
        } 
 
        internal void FireOnSchemaRefreshed(EventArgs e)
        { 
            OnSchemaRefreshed(e);
        }

        internal bool InternalViewSchemasEquivalent(IDataSourceViewSchema viewSchema1, IDataSourceViewSchema viewSchema2) 
        {
            return ViewSchemasEquivalent(viewSchema1, viewSchema2); 
        } 

        internal virtual object LoadFromDesignerState(string key) 
        {
            return DesignerState[key];
        }
 
        internal void SaveDesignerState(string key, object value)
        { 
            DesignerState[key] = value; 
        }
        #endregion 

        #region Overridden control properties for providing editors and dropdowns in property grid
        [
        DefaultValue(""), 
        Category("Data"),
        ResourceDescription(WebControlsRes.PropertyDescription_DefaultContainerName), 
        TypeConverter(typeof(EntityDataSourceContainerNameConverter)), 
        ]
        public string DefaultContainerName 
        {
            get
            {
                return _helper.DefaultContainerName; 
            }
            set 
            { 
                _helper.DefaultContainerName = value;
            } 
        }


        [ 
        DefaultValue(""),
        Category("Data"), 
        ResourceDescription(WebControlsRes.PropertyDescription_EntitySetName), 
        TypeConverter(typeof(EntityDataSourceEntitySetNameConverter)),
        ] 
        public string EntitySetName
        {
            get
            { 
                return _helper.EntitySetName;
            } 
            set 
            {
                _helper.EntitySetName = value; 
            }
        }

        [ 
        DefaultValue(""),
        Category("Data"), 
        ResourceDescription(WebControlsRes.PropertyDescription_EntityTypeFilter), 
        TypeConverter(typeof(EntityDataSourceEntityTypeFilterConverter)),
        ] 
        public string EntityTypeFilter
        {
            get
            { 
                return _helper.EntityTypeFilter;
            } 
            set 
            {
                _helper.EntityTypeFilter = value; 
            }
        }

        [ 
        Category("Data"),
        ResourceDescription(WebControlsRes.PropertyDescription_CommandText), 
        DefaultValue(null), 
        Editor(typeof(EntityDataSourceStatementEditor), typeof(UITypeEditor)),
        MergableProperty(false), 
        ]
        public string CommandText
        {
            get 
            {
                return _helper.CommandText; 
            } 
            set
            { 
                _helper.CommandText = value;
            }
        }
 
        [
        DefaultValue(""), 
        Category("Data"), 
        ResourceDescription(WebControlsRes.PropertyDescription_ConnectionString)
        ] 
        public string ConnectionString
        {
            get
            { 
                return _helper.ConnectionString;
            } 
            set 
            {
                _helper.ConnectionString = value; 
            }
        }

        [ 
        Category("Data"),
        ResourceDescription(WebControlsRes.PropertyDescription_OrderBy), 
        DefaultValue(null), 
        Editor(typeof(EntityDataSourceStatementEditor), typeof(UITypeEditor)),
        MergableProperty(false), 
        ]
        public string OrderBy
        {
            get 
            {
                return _helper.OrderBy; 
            } 
            set
            { 
                _helper.OrderBy = value;
            }
        }
 
        [
        Category("Data"), 
        ResourceDescription(WebControlsRes.PropertyDescription_Select), 
        DefaultValue(""),
        Editor(typeof(EntityDataSourceStatementEditor), typeof(UITypeEditor)), 
        MergableProperty(false),
        ]
        public string Select
        { 
            get
            { 
                return _helper.Select; 
            }
            set 
            {
                _helper.Select = value;
            }
        } 

        [ 
        Category("Data"), 
        ResourceDescription(WebControlsRes.PropertyDescription_Where),
        DefaultValue(null), 
        Editor(typeof(EntityDataSourceStatementEditor), typeof(UITypeEditor)),
        MergableProperty(false),
        ]
        public string Where 
        {
            get 
            { 
                return _helper.Where;
            } 
            set
            {
                _helper.Where = value;
            } 
        }
        #endregion 
 
        #region Helper methods to manage properties and parameters in the statement editor
        internal bool AutoGenerateOrderByClause 
        {
            get
            {
                return _helper.AutoGenerateOrderByClause; 
            }
        } 
 
        internal bool AutoGenerateWhereClause
        { 
            get
            {
                return _helper.AutoGenerateWhereClause;
            } 
        }
 
        internal ParameterCollection CloneCommandParameters() 
        {
            return CloneParameterCollection(_helper.CommandParameters); 
        }

        internal ParameterCollection CloneOrderByParameters()
        { 
            return CloneParameterCollection(_helper.OrderByParameters);
        } 
 
        internal ParameterCollection CloneSelectParameters()
        { 
            return CloneParameterCollection(_helper.SelectParameters);
        }

        internal ParameterCollection CloneWhereParameters() 
        {
            return CloneParameterCollection(_helper.WhereParameters); 
        } 

        private ParameterCollection CloneParameterCollection(ParameterCollection original) 
        {
            ParameterCollection clones = new ParameterCollection();
            CloneParameters(original, clones);
            return clones; 
        }
 
        internal void CloneParameters(ParameterCollection originalParameters, ParameterCollection newParameters) 
        {
            foreach (ICloneable parameter in originalParameters) 
            {
                Parameter clone = (Parameter)parameter.Clone();
                RegisterClone(parameter, clone);
                newParameters.Add(clone); 
            }
        } 
 
        internal void SetCommandParameterContents(ParameterCollection newParams)
        { 
            SetParameters(_helper.CommandParameters, newParams);
        }

        internal void SetOrderByParameterContents(ParameterCollection newParams) 
        {
            SetParameters(_helper.OrderByParameters, newParams); 
        } 

        internal void SetSelectParameterContents(ParameterCollection newParams) 
        {
            SetParameters(_helper.SelectParameters, newParams);
        }
 
        internal void SetWhereParameterContents(ParameterCollection newParams)
        { 
            SetParameters(_helper.WhereParameters, newParams); 
        }
 
        private void SetParameters(ParameterCollection original, ParameterCollection newParams)
        {
            original.Clear();
            foreach (Parameter parameter in newParams) 
            {
                original.Add(parameter); 
            } 
        }
        #endregion 

        protected override void PreFilterProperties(System.Collections.IDictionary properties)
        {
            base.PreFilterProperties(properties); 

            // Properties that are overridden in the designer because they have custom editors or converters 
            Type designerType = GetType(); 
            properties["ConnectionString"] = TypeDescriptor.CreateProperty(designerType, "ConnectionString", typeof(string));
            properties["DefaultContainerName"] = TypeDescriptor.CreateProperty(designerType, "DefaultContainerName", typeof(string)); 
            properties["EntitySetName"] = TypeDescriptor.CreateProperty(designerType, "EntitySetName", typeof(string));
            properties["EntityTypeFilter"] = TypeDescriptor.CreateProperty(designerType, "EntityTypeFilter", typeof(string));
            properties["CommandText"] = TypeDescriptor.CreateProperty(designerType, "CommandText", typeof(string));
            properties["OrderBy"] = TypeDescriptor.CreateProperty(designerType, "OrderBy", typeof(string)); 
            properties["Select"] = TypeDescriptor.CreateProperty(designerType, "Select", typeof(string));
            properties["Where"] = TypeDescriptor.CreateProperty(designerType, "Where", typeof(string)); 
 
            // Properties that should be browsable in intellisense, but not visible in the designer property grid
            properties.Remove("ContextType"); 
        }

        internal EntityDataSourceDesignerHelper Helper
        { 
            get
            { 
                return _helper; 
            }
        } 

    }
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.

                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK