EntityDataSourceColumn.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / ndp / fx / src / DataWebControls / System / Data / WebControls / EntityDataSourceColumn.cs / 1 / EntityDataSourceColumn.cs

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

using System; 
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.EntityClient; 
using System.Data.Metadata.Edm;
using System.Diagnostics; 
using System.Globalization; 
using System.Reflection;
using System.ComponentModel; 
using System.Data.Common;
using System.Data.Objects.DataClasses;
using System.Data.Objects;
using System.Data; 

namespace System.Web.UI.WebControls 
{ 
    /// 
    /// Represents a column in EntityDataSourceView. 
    /// 
    internal abstract class EntityDataSourceColumn
    {
        protected EntityDataSourceColumn(string displayName) 
            : this(displayName, (EntityDataSourceColumn)null)
        { 
        } 

        protected EntityDataSourceColumn(string displayName, EntityDataSourceColumn controllingColumn) 
        {
            EntityDataSourceUtil.CheckArgumentNull(displayName, "displayName");

            this.DisplayName = displayName; 
            this.ControllingColumn = controllingColumn;
        } 
 
        /// 
        /// Gets the display name for this column. 
        /// 
        internal readonly string DisplayName;

        ///  
        /// Gets the column exposed to the user. For instance, the reference key
        /// it.Order.OrderID might have a dependent it.OrderID where there is a 
        /// ReferentialConstraint. 
        /// 
        internal readonly EntityDataSourceColumn ControllingColumn; 

        /// 
        /// Gets value indicating whether the column should be exposed to the user.
        ///  
        internal bool IsHidden
        { 
            get 
            {
                // Columns with dependents are not shown to the user. They are 
                // merely used to plumb values (e.g. via referential integrity
                // constraints)
                return this.ControllingColumn != null;
            } 
        }
 
        ///  
        /// Gets the CLR type for the column value.
        ///  
        internal abstract Type ClrType { get; }

        /// 
        /// Gets a value indicating whether the original value for the column 
        /// needs to be preserved.
        ///  
        internal abstract bool IsInteresting { get; } 

        ///  
        /// Gets a value indicating whether the column can be modified. Can be
        /// overridden by the collection (which may be readonly).
        /// 
        internal abstract bool CanWrite { get; } 

        ///  
        /// Indicates whether this column can be assigned a value of null. 
        /// 
        internal abstract bool IsNullable { get; } 

        /// 
        /// Indicates whether this column represents a primitive type.
        ///  
        internal abstract bool IsPrimitive { get; }
 
        /// Returns an Entity-SQL representation of this column with respect 
        /// to entity parameter 'it'.
        ///  
        /// Entity-SQL string.
        internal abstract string GetEntitySqlValue();

        protected abstract object GetValue(object entity); 
        protected abstract void SetValue(object entity, object value);
 
        internal object GetValue(EntityDataSourceWrapper wrapper) 
        {
            return GetValue(wrapper.WrappedEntity); 
        }

        internal void SetValue(EntityDataSourceWrapper wrapper, object value)
        { 
            SetValue(wrapper.WrappedEntity, value);
        } 
    } 

    ///  
    /// An EntityDataSourceView column that is an entity type or complex type property.
    /// 
    internal class EntityDataSourcePropertyColumn : EntityDataSourceColumn
    { 
        private readonly EntityDataSourceMemberPath memberPath;
 
        internal EntityDataSourcePropertyColumn(EntityDataSourceMemberPath memberPath) 
            : base(EntityDataSourceUtil.CheckArgumentNull(memberPath, "memberPath").GetDescription())
        { 
            this.memberPath = memberPath;
        }

        internal override bool IsInteresting 
        {
            get 
            { 
                // the member path knows if its interesting...
                return this.memberPath.IsInteresting; 
            }
        }

        internal override bool CanWrite 
        {
            get 
            { 
                // can always write
                return true; 
            }
        }

        internal override bool IsNullable 
        {
            get { return memberPath.IsNullable; } 
        } 

        internal override bool IsPrimitive 
        {
            get { return memberPath.IsPrimitive; }
        }
 
        internal override Type ClrType
        { 
            get { return this.memberPath.ClrType; } 
        }
 
        override protected object GetValue(object entity)
        {
            return this.memberPath.GetValue(entity);
        } 

        override protected void SetValue(object entity, object value) 
        { 
            this.memberPath.SetValue(entity, value);
        } 

        internal override string GetEntitySqlValue()
        {
            return this.memberPath.GetEntitySqlValue(); 
        }
 
        public override string ToString() 
        {
            return this.memberPath.ToString(); 
        }

        /// 
        /// Indicates whether this column represents a primary key value; 
        /// 
        internal bool IsKey 
        { 
            get { return memberPath.IsKey; }
        } 
    }

    /// 
    /// An EntityDataSourceView column 
    /// 
    internal class EntityDataSourceReferenceKeyColumn : EntityDataSourceColumn 
    { 
        private readonly EntityDataSourceReferenceGroup group;
        private readonly EdmProperty keyMember; 
        private readonly Type clrType;
        private readonly bool isNullable;

        internal EntityDataSourceReferenceKeyColumn(EntityDataSourceReferenceGroup group, EdmProperty keyMember, EntityDataSourceColumn dependent) 
            : base(CreateDisplayName(group, keyMember), dependent)
        { 
            EntityDataSourceUtil.CheckArgumentNull(group, "group"); 
            EntityDataSourceUtil.CheckArgumentNull(keyMember, "keyMember");
 
            this.group = group;
            this.keyMember = keyMember;
            this.clrType = EntityDataSourceUtil.GetPrimitiveMemberClrType(keyMember);
 
            // if the association end is optional (0..1), make sure the CLR type
            // is also nullable 
            if (this.group.End.CorrespondingAssociationEndMember.RelationshipMultiplicity == RelationshipMultiplicity.ZeroOrOne) 
            {
                this.clrType = EntityDataSourceUtil.MakeNullable(clrType); 
                this.isNullable = true;
            }
        }
 
        internal override bool IsInteresting
        { 
            get 
            {
                // references are always interesting 
                return true;
            }
        }
 
        internal override bool CanWrite
        { 
            get 
            {
                // references can always be written 
                return true;
            }
        }
 
        internal override bool IsNullable
        { 
            get { return this.isNullable; } 
        }
 
        internal override bool IsPrimitive
        {
            get { return keyMember.TypeUsage.EdmType.BuiltInTypeKind == BuiltInTypeKind.PrimitiveType; }
        } 

        internal override Type ClrType 
        { 
            get { return this.clrType; }
        } 

        internal EntityDataSourceReferenceGroup Group
        {
            get { return this.group; } 
        }
 
        internal EdmMember KeyMember 
        {
            get { return this.keyMember; } 
        }

        private static string CreateDisplayName(EntityDataSourceReferenceGroup group, EdmProperty keyMember)
        { 
            EntityDataSourceUtil.CheckArgumentNull(group, "group");
            EntityDataSourceUtil.CheckArgumentNull(keyMember, "keyMember"); 
 
            NavigationProperty navigationProperty;
 
            string result;

            if (EntityDataSourceUtil.TryGetCorrespondingNavigationProperty(group.End.CorrespondingAssociationEndMember, out navigationProperty))
            { 
                result = navigationProperty.Name + "." + keyMember.Name;
            } 
            else 
            {
                // if there is no Navigation property, use the TargetTole and KeyMember name 
                // TargetRole.KeyMember
                result = group.End.Name + "." + keyMember.Name;
            }
 
            return result;
        } 
 
        public override string ToString()
        { 
            return String.Format(CultureInfo.InvariantCulture, "",
                this.group.End.ParentAssociationSet.Name, this.group.End.Name);
        }
 
        protected override object GetValue(object entity)
        { 
            EntityKey entityKey = this.Group.GetEntityKey((IEntityWithRelationships)entity); 
            if (null == entityKey)
            { 
                return null;
            }
            else
            { 
                object value = null;
                // loop through to find the correct keymember, take compound key into consideration 
                foreach (EntityKeyMember entityKeyValue in entityKey.EntityKeyValues) 
                {
                    if (entityKeyValue.Key == this.KeyMember.Name) 
                    {
                        value = entityKeyValue.Value;
                    }
                } 
                return value;
            } 
        } 

        protected override void SetValue(object entity, object value) 
        {
            throw new InvalidOperationException(Strings.SetValueNotSupported);
        }
 
        internal override string GetEntitySqlValue()
        { 
            // syntax: NAVIGATE(it, _association_type_name_, _target_role_name_)._key_member_ 
            StringBuilder builder = new StringBuilder();
 
            builder.Append("NAVIGATE(");
            builder.Append(EntityDataSourceUtil.EntitySqlElementAlias);
            builder.Append(", ");
            builder.Append(EntityDataSourceUtil.CreateEntitySqlTypeIdentifier(this.Group.End.ParentAssociationSet.ElementType)); 
            builder.Append(", ");
            builder.Append(EntityDataSourceUtil.QuoteEntitySqlIdentifier(this.Group.End.CorrespondingAssociationEndMember.Name)); 
            builder.Append(")."); 
            builder.Append(EntityDataSourceUtil.QuoteEntitySqlIdentifier(this.keyMember.Name));
            string result = builder.ToString(); 

            return result;
        }
    } 

    internal abstract class EntityDataSourceReferenceValueColumn : EntityDataSourceColumn 
    { 
        private readonly NavigationProperty navigationProperty;
 
        protected EntityDataSourceReferenceValueColumn(MetadataWorkspace ocWorkspace, NavigationProperty navigationProperty)
            : base(EntityDataSourceUtil.CheckArgumentNull(navigationProperty, "navigationProperty").Name)
        {
            EntityDataSourceUtil.CheckArgumentNull(ocWorkspace, "ocWorkspace"); 

            this.navigationProperty = navigationProperty; 
        } 

        internal static EntityDataSourceReferenceValueColumn Create(Type clrToType, MetadataWorkspace ocWorkspace, NavigationProperty navigationProperty) 
        {
            EntityDataSourceUtil.CheckArgumentNull(clrToType, "clrToType");

            Type columnType = typeof(EntityDataSourceReferenceValueColumn<>).MakeGenericType(clrToType); 
            EntityDataSourceReferenceValueColumn result = (EntityDataSourceReferenceValueColumn)Activator.CreateInstance(columnType, ocWorkspace, navigationProperty);
            return result; 
        } 

        internal override bool CanWrite 
        {
            get
            {
                // can never write to a navigation reference 
                return false;
            } 
        } 

        internal override bool IsNullable 
        {
            get { return navigationProperty.ToEndMember.RelationshipMultiplicity == RelationshipMultiplicity.ZeroOrOne; }
        }
 
        protected NavigationProperty NavigationProperty
        { 
            get { return this.navigationProperty; } 
        }
 
        internal override bool IsPrimitive
        {
            get { return false; }
        } 

        internal override string GetEntitySqlValue() 
        { 
            // it.NavigationPropertyName
            string result = EntityDataSourceUtil.EntitySqlElementAlias + "." + EntityDataSourceUtil.QuoteEntitySqlIdentifier(this.navigationProperty.Name); 
            return result;
        }

        internal override bool IsInteresting 
        {
            get 
            { 
                // a navigation reference is not written, so its original values aren't interesting
                return false; 
            }
        }

        protected override void SetValue(object entity, object value) 
        {
            throw new InvalidOperationException(Strings.SetValueNotSupported); 
        } 
    }
 
    internal class EntityDataSourceReferenceValueColumn : EntityDataSourceReferenceValueColumn
        where T : class, IEntityWithRelationships
    {
        public EntityDataSourceReferenceValueColumn(MetadataWorkspace ocWorkspace, NavigationProperty navigationProperty) 
            : base(ocWorkspace, navigationProperty)
        { 
        } 

        protected override object GetValue(object entity) 
        {
            object result;
            EntityReference reference = GetRelatedReference((IEntityWithRelationships)entity);
            if (reference.IsLoaded) 
            {
                result = reference.Value; 
            } 
            else
            { 
                result = null;
            }
            return result;
        } 

        internal override Type ClrType 
        { 
            get
            { 
                return typeof(T);
            }
        }
 
        private EntityReference GetRelatedReference(IEntityWithRelationships entity)
        { 
            EntityReference reference = entity.RelationshipManager.GetRelatedReference( 
                this.NavigationProperty.RelationshipType.FullName,
                this.NavigationProperty.ToEndMember.Name); 
            return reference;
        }
    }
} 

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

using System; 
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.EntityClient; 
using System.Data.Metadata.Edm;
using System.Diagnostics; 
using System.Globalization; 
using System.Reflection;
using System.ComponentModel; 
using System.Data.Common;
using System.Data.Objects.DataClasses;
using System.Data.Objects;
using System.Data; 

namespace System.Web.UI.WebControls 
{ 
    /// 
    /// Represents a column in EntityDataSourceView. 
    /// 
    internal abstract class EntityDataSourceColumn
    {
        protected EntityDataSourceColumn(string displayName) 
            : this(displayName, (EntityDataSourceColumn)null)
        { 
        } 

        protected EntityDataSourceColumn(string displayName, EntityDataSourceColumn controllingColumn) 
        {
            EntityDataSourceUtil.CheckArgumentNull(displayName, "displayName");

            this.DisplayName = displayName; 
            this.ControllingColumn = controllingColumn;
        } 
 
        /// 
        /// Gets the display name for this column. 
        /// 
        internal readonly string DisplayName;

        ///  
        /// Gets the column exposed to the user. For instance, the reference key
        /// it.Order.OrderID might have a dependent it.OrderID where there is a 
        /// ReferentialConstraint. 
        /// 
        internal readonly EntityDataSourceColumn ControllingColumn; 

        /// 
        /// Gets value indicating whether the column should be exposed to the user.
        ///  
        internal bool IsHidden
        { 
            get 
            {
                // Columns with dependents are not shown to the user. They are 
                // merely used to plumb values (e.g. via referential integrity
                // constraints)
                return this.ControllingColumn != null;
            } 
        }
 
        ///  
        /// Gets the CLR type for the column value.
        ///  
        internal abstract Type ClrType { get; }

        /// 
        /// Gets a value indicating whether the original value for the column 
        /// needs to be preserved.
        ///  
        internal abstract bool IsInteresting { get; } 

        ///  
        /// Gets a value indicating whether the column can be modified. Can be
        /// overridden by the collection (which may be readonly).
        /// 
        internal abstract bool CanWrite { get; } 

        ///  
        /// Indicates whether this column can be assigned a value of null. 
        /// 
        internal abstract bool IsNullable { get; } 

        /// 
        /// Indicates whether this column represents a primitive type.
        ///  
        internal abstract bool IsPrimitive { get; }
 
        /// Returns an Entity-SQL representation of this column with respect 
        /// to entity parameter 'it'.
        ///  
        /// Entity-SQL string.
        internal abstract string GetEntitySqlValue();

        protected abstract object GetValue(object entity); 
        protected abstract void SetValue(object entity, object value);
 
        internal object GetValue(EntityDataSourceWrapper wrapper) 
        {
            return GetValue(wrapper.WrappedEntity); 
        }

        internal void SetValue(EntityDataSourceWrapper wrapper, object value)
        { 
            SetValue(wrapper.WrappedEntity, value);
        } 
    } 

    ///  
    /// An EntityDataSourceView column that is an entity type or complex type property.
    /// 
    internal class EntityDataSourcePropertyColumn : EntityDataSourceColumn
    { 
        private readonly EntityDataSourceMemberPath memberPath;
 
        internal EntityDataSourcePropertyColumn(EntityDataSourceMemberPath memberPath) 
            : base(EntityDataSourceUtil.CheckArgumentNull(memberPath, "memberPath").GetDescription())
        { 
            this.memberPath = memberPath;
        }

        internal override bool IsInteresting 
        {
            get 
            { 
                // the member path knows if its interesting...
                return this.memberPath.IsInteresting; 
            }
        }

        internal override bool CanWrite 
        {
            get 
            { 
                // can always write
                return true; 
            }
        }

        internal override bool IsNullable 
        {
            get { return memberPath.IsNullable; } 
        } 

        internal override bool IsPrimitive 
        {
            get { return memberPath.IsPrimitive; }
        }
 
        internal override Type ClrType
        { 
            get { return this.memberPath.ClrType; } 
        }
 
        override protected object GetValue(object entity)
        {
            return this.memberPath.GetValue(entity);
        } 

        override protected void SetValue(object entity, object value) 
        { 
            this.memberPath.SetValue(entity, value);
        } 

        internal override string GetEntitySqlValue()
        {
            return this.memberPath.GetEntitySqlValue(); 
        }
 
        public override string ToString() 
        {
            return this.memberPath.ToString(); 
        }

        /// 
        /// Indicates whether this column represents a primary key value; 
        /// 
        internal bool IsKey 
        { 
            get { return memberPath.IsKey; }
        } 
    }

    /// 
    /// An EntityDataSourceView column 
    /// 
    internal class EntityDataSourceReferenceKeyColumn : EntityDataSourceColumn 
    { 
        private readonly EntityDataSourceReferenceGroup group;
        private readonly EdmProperty keyMember; 
        private readonly Type clrType;
        private readonly bool isNullable;

        internal EntityDataSourceReferenceKeyColumn(EntityDataSourceReferenceGroup group, EdmProperty keyMember, EntityDataSourceColumn dependent) 
            : base(CreateDisplayName(group, keyMember), dependent)
        { 
            EntityDataSourceUtil.CheckArgumentNull(group, "group"); 
            EntityDataSourceUtil.CheckArgumentNull(keyMember, "keyMember");
 
            this.group = group;
            this.keyMember = keyMember;
            this.clrType = EntityDataSourceUtil.GetPrimitiveMemberClrType(keyMember);
 
            // if the association end is optional (0..1), make sure the CLR type
            // is also nullable 
            if (this.group.End.CorrespondingAssociationEndMember.RelationshipMultiplicity == RelationshipMultiplicity.ZeroOrOne) 
            {
                this.clrType = EntityDataSourceUtil.MakeNullable(clrType); 
                this.isNullable = true;
            }
        }
 
        internal override bool IsInteresting
        { 
            get 
            {
                // references are always interesting 
                return true;
            }
        }
 
        internal override bool CanWrite
        { 
            get 
            {
                // references can always be written 
                return true;
            }
        }
 
        internal override bool IsNullable
        { 
            get { return this.isNullable; } 
        }
 
        internal override bool IsPrimitive
        {
            get { return keyMember.TypeUsage.EdmType.BuiltInTypeKind == BuiltInTypeKind.PrimitiveType; }
        } 

        internal override Type ClrType 
        { 
            get { return this.clrType; }
        } 

        internal EntityDataSourceReferenceGroup Group
        {
            get { return this.group; } 
        }
 
        internal EdmMember KeyMember 
        {
            get { return this.keyMember; } 
        }

        private static string CreateDisplayName(EntityDataSourceReferenceGroup group, EdmProperty keyMember)
        { 
            EntityDataSourceUtil.CheckArgumentNull(group, "group");
            EntityDataSourceUtil.CheckArgumentNull(keyMember, "keyMember"); 
 
            NavigationProperty navigationProperty;
 
            string result;

            if (EntityDataSourceUtil.TryGetCorrespondingNavigationProperty(group.End.CorrespondingAssociationEndMember, out navigationProperty))
            { 
                result = navigationProperty.Name + "." + keyMember.Name;
            } 
            else 
            {
                // if there is no Navigation property, use the TargetTole and KeyMember name 
                // TargetRole.KeyMember
                result = group.End.Name + "." + keyMember.Name;
            }
 
            return result;
        } 
 
        public override string ToString()
        { 
            return String.Format(CultureInfo.InvariantCulture, "",
                this.group.End.ParentAssociationSet.Name, this.group.End.Name);
        }
 
        protected override object GetValue(object entity)
        { 
            EntityKey entityKey = this.Group.GetEntityKey((IEntityWithRelationships)entity); 
            if (null == entityKey)
            { 
                return null;
            }
            else
            { 
                object value = null;
                // loop through to find the correct keymember, take compound key into consideration 
                foreach (EntityKeyMember entityKeyValue in entityKey.EntityKeyValues) 
                {
                    if (entityKeyValue.Key == this.KeyMember.Name) 
                    {
                        value = entityKeyValue.Value;
                    }
                } 
                return value;
            } 
        } 

        protected override void SetValue(object entity, object value) 
        {
            throw new InvalidOperationException(Strings.SetValueNotSupported);
        }
 
        internal override string GetEntitySqlValue()
        { 
            // syntax: NAVIGATE(it, _association_type_name_, _target_role_name_)._key_member_ 
            StringBuilder builder = new StringBuilder();
 
            builder.Append("NAVIGATE(");
            builder.Append(EntityDataSourceUtil.EntitySqlElementAlias);
            builder.Append(", ");
            builder.Append(EntityDataSourceUtil.CreateEntitySqlTypeIdentifier(this.Group.End.ParentAssociationSet.ElementType)); 
            builder.Append(", ");
            builder.Append(EntityDataSourceUtil.QuoteEntitySqlIdentifier(this.Group.End.CorrespondingAssociationEndMember.Name)); 
            builder.Append(")."); 
            builder.Append(EntityDataSourceUtil.QuoteEntitySqlIdentifier(this.keyMember.Name));
            string result = builder.ToString(); 

            return result;
        }
    } 

    internal abstract class EntityDataSourceReferenceValueColumn : EntityDataSourceColumn 
    { 
        private readonly NavigationProperty navigationProperty;
 
        protected EntityDataSourceReferenceValueColumn(MetadataWorkspace ocWorkspace, NavigationProperty navigationProperty)
            : base(EntityDataSourceUtil.CheckArgumentNull(navigationProperty, "navigationProperty").Name)
        {
            EntityDataSourceUtil.CheckArgumentNull(ocWorkspace, "ocWorkspace"); 

            this.navigationProperty = navigationProperty; 
        } 

        internal static EntityDataSourceReferenceValueColumn Create(Type clrToType, MetadataWorkspace ocWorkspace, NavigationProperty navigationProperty) 
        {
            EntityDataSourceUtil.CheckArgumentNull(clrToType, "clrToType");

            Type columnType = typeof(EntityDataSourceReferenceValueColumn<>).MakeGenericType(clrToType); 
            EntityDataSourceReferenceValueColumn result = (EntityDataSourceReferenceValueColumn)Activator.CreateInstance(columnType, ocWorkspace, navigationProperty);
            return result; 
        } 

        internal override bool CanWrite 
        {
            get
            {
                // can never write to a navigation reference 
                return false;
            } 
        } 

        internal override bool IsNullable 
        {
            get { return navigationProperty.ToEndMember.RelationshipMultiplicity == RelationshipMultiplicity.ZeroOrOne; }
        }
 
        protected NavigationProperty NavigationProperty
        { 
            get { return this.navigationProperty; } 
        }
 
        internal override bool IsPrimitive
        {
            get { return false; }
        } 

        internal override string GetEntitySqlValue() 
        { 
            // it.NavigationPropertyName
            string result = EntityDataSourceUtil.EntitySqlElementAlias + "." + EntityDataSourceUtil.QuoteEntitySqlIdentifier(this.navigationProperty.Name); 
            return result;
        }

        internal override bool IsInteresting 
        {
            get 
            { 
                // a navigation reference is not written, so its original values aren't interesting
                return false; 
            }
        }

        protected override void SetValue(object entity, object value) 
        {
            throw new InvalidOperationException(Strings.SetValueNotSupported); 
        } 
    }
 
    internal class EntityDataSourceReferenceValueColumn : EntityDataSourceReferenceValueColumn
        where T : class, IEntityWithRelationships
    {
        public EntityDataSourceReferenceValueColumn(MetadataWorkspace ocWorkspace, NavigationProperty navigationProperty) 
            : base(ocWorkspace, navigationProperty)
        { 
        } 

        protected override object GetValue(object entity) 
        {
            object result;
            EntityReference reference = GetRelatedReference((IEntityWithRelationships)entity);
            if (reference.IsLoaded) 
            {
                result = reference.Value; 
            } 
            else
            { 
                result = null;
            }
            return result;
        } 

        internal override Type ClrType 
        { 
            get
            { 
                return typeof(T);
            }
        }
 
        private EntityReference GetRelatedReference(IEntityWithRelationships entity)
        { 
            EntityReference reference = entity.RelationshipManager.GetRelatedReference( 
                this.NavigationProperty.RelationshipType.FullName,
                this.NavigationProperty.ToEndMember.Name); 
            return reference;
        }
    }
} 

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